Secondo me dipende da cosa fa il programma.
Io avevo avuto lo stesso comportamento utilizzando un WinSock che non riusciva a separare i dati (divisi) in uscita spedendo un'unica stringa.
Con il debug invece le operazioni venivano rallentate permettendo la separazione. Per questo motivo ho inserito un "tempo d'attesa" tramite l'API Sleep risolvendo il problema.