OutputDebugString su codice di produzione

Sempre per la serie "piccole cose da evitare" stamattina ho cercato di debuggare un problema abbastanza ignorante determinato da condizioni molto particolari in uno scenario di multithread.

Tipicamente per debuggare problemi di questo tipo il mio approcio è quello di infarcire il codice di OutputDebugString (il come è indifferente, usando la Trace, la chiamata Api diretta o log4net) ed usando il debug view di sysinternals cercare di capirci qualcosa.

Bene, proprio usando il debugview ho beccato un simpatico pezzo del Symantec Antivirus Corporate (il programma savroam.exe) che, puntuale ogni 10 secondi, mi scriveva sul debug questo simpatico messaggio "ServiceControl 4". E se tenete il debugview attivo sulla macchina troverete spesso e volentieri messaggi di vario genere (il driver video ati ogni tanto scrive PING e PONG, quello Realtek della scheda audio altre cose e credo che la lista non sia terminata, soprattutto perchè sulle mie macchine di sviluppo cerco di tenere attivo quanto meno software possibile).

Ora la mia idea è molto semplice: rilasciare codice che scrive sul debug in maniera continuativa è pura e semplice maleducazione. Se io uso il debugview mediamente lo faccio per debuggarmi le cose mie, non per estrarre le mie informazioni filtrandole con altri messaggi che siano dentro il sistema.

Quindi, tra i vari controlli da fare prima di fare un rilascio, controllate anche di non aver lasciato codice di trace...