Quante chiamate a OutputDebugString
ci sono nel vostro progetto? Puoi utilizzare la finestra di dialogo "Trova nei file" per trovarli tutti e, se non sono troppi, non dovrebbe esserci un problema.
In caso contrario, è possibile, ovviamente, utilizzare una ricerca e sostituire e sostituire tutto OutputDebugString(
con raise Exception.Create(
.
Si potrebbe anche scrivere una funzione
procedure OutputDebugString(const Str: string);
begin
raise Exception.Create(Str);
end;
in un'unità utilizzata da ogni altra unità nel progetto. Se solo questa nuova unità viene dichiarata dopo lo Windows.pas
nell'elenco uses
, verrà utilizzata questa nuova funzione al posto di quella di Windows.pas.
Aggiornamento
Sì, è possibile inserire i punti di interruzione all'interno Windows.pas. Per prima cosa, nel tuo progetto, vai su Opzioni progetto, e sotto Debug, seleziona "Usa DCU debug". Poi si può andare a Windows.pas e mettere un punto di interruzione alla linea di 30769:
procedure OutputDebugString; external kernel32 name 'OutputDebugStringW';
fonte
2010-11-23 17:29:21
Troppe distribuzioni su progetto e componenti .. Non sono nemmeno sicuro se il messaggio proviene da codice proprio o di terze parti. – Harriv
Sì, esegue il debug della DCU. Ora ho solo bisogno di capire come impostare la condizione .. – Harriv
se non è il tuo codice ma qualche unità che usi (indirettamente) la chiamata potrebbe anche andare a OutputDebugStringA. – Remko