2009-03-14 4 views
6

Sto sviluppando un Browser Helper Object in esecuzione in Internet Explorer. Sto scrivendo messaggi di debug con ATLTRACE("..."); Questi appaiono bene quando Visual Studio è collegato al processo iexplore.exe, ma questo è lento per un test rapido. DebugView non cattura nulla dal mio BHO.Perché DebugView non mostra messaggi di debugging quando Visual Studio esegue

Perché DebugView non mostra i messaggi di debug BHO? Ha qualcosa a che fare con Internet Explorer in esecuzione a basso livello di integrità?

risposta

11

Supponendo che si stia eseguendo IE su Vista o successivo (come suona dal momento che si parla di livelli di integrità), è possibile impostare il livello di integrità di DebugView su un'integrità inferiore in modo che qualsiasi applicazione possa inviare messaggi ad esso :

icacls dbgview.exe /setintegritylevel low 

e se non ti piace l'idea di creare in modo permanente DbgView a bassa integrità (potrebbe avere i log di risparmio e quant'altro un po 'di dolore, in quanto saranno solo andare in negozio a bassa integrità) è possibile eseguire una particolare istanza di dbgview a bassa integrità utilizzando lo strumento psexec di Sysinternals:

psexec -l dbgview 

Infine, se tutto ciò che ti preoccupa è la quantità di tempo necessaria per caricare il debugger VS da allegare al processo, puoi utilizzare un debugger a riga di comando (come ntsd.exe o cdb.exe). Ntsd.exe viene fornito con Windows, ma una versione più recente viene fornita con lo "Debugging Tools for Windows" package, che include anche il cdb.exe molto simile.

+0

Sembra strano, hai altri dettagli sul motivo per cui questo funzionerebbe? Tracing utilizza OutputDebugString, non la messaggistica. – jdigital

+3

Il mio ricordo è che OutputDebugString utilizza una sezione di memoria condivisa con un mutex e gli eventi per passare i dati in giro. Presumo (forse erroneamente) che l'apertura di una sezione condivisa o di eventi di segnalazione da un processo di bassa integrità a un processo di integrità superiore sia bloccata. –

+0

Ha dato il via a un psexec - funziona alla grande. Ricordo vagamente problemi simili in passato avevo dimenticato come ho risolto. Eseguire DbgView in bassa fa il lavoro, ma piuttosto fastidioso! In termini di tempo, i suoi Visual Studio caricano i simboli IE che impiegano del tempo. Probabilmente potrei accelerarlo un po '. – Mat

1

Per i test rapidi, Visual Studio è ancora in esecuzione? Se è così, ciò potrebbe causare questo problema.

+0

Seguo la tua linea di pensiero - Visual Studio è in esecuzione, ma non il debug. – Mat

+0

Quindi, spegnilo e controlla se DebugView funziona. – jdigital

+0

Giusto per confermare: basta eseguire Visual Studio che intercetta i messaggi e impedisce loro di essere visibili in DebugView. NON è sufficiente semplicemente non eseguire una sessione di debug in esso. Come soluzione, sembra che se avvii DebugView prima di Visual Studio, mostra ancora tutti i messaggi. – Cray