2009-03-14 16 views
6

Tworzę obiekt pomocnika przeglądarki działający w przeglądarce Internet Explorer. Piszę komunikaty debugowania ATLTRACE("..."); Te pojawiają się dobrze, gdy Visual Studio jest dołączony do procesu iexplore.exe, ale to jest powolne dla szybkiego testu. DebugView nie przechwytuje niczego z mojego BHO.Dlaczego program DebugView nie wyświetla komunikatów debugowania, gdy program Visual Studio wykonuje

Dlaczego program DebugView nie wyświetla komunikatów debugowania BHO? Czy ma to coś wspólnego z przeglądarką Internet Explorer działającą na niskim poziomie integralności?

Odpowiedz

11

Zakładając, że korzystasz z IE w systemie Vista lub nowszym (co brzmi jak od kiedy mówisz o poziomach integralności), możesz ustawić poziom integralności DebugView na niższą integralność, aby każda aplikacja mogła wysyłać do niej wiadomości :

icacls dbgview.exe /setintegritylevel low 

a jeśli nie podoba ci się pomysł na stałe ustawienie dbgview do niskiej integralności (może to zrobić logi oszczędności i etażerka trochę bólu, jak tylko pójdą do sklepu niskiej integralności) można uruchomić określoną instancję dbgview przy niskiej integralności za pomocą narzędzia Sysinternals psexec:

psexec -l dbgview 

Na koniec, jeśli martwi Cię tylko to, ile czasu potrzeba na załadowanie debugera VS do dołączenia do procesu, możesz użyć debugera wiersza poleceń (np. Ntsd.exe lub cdb.exe). Program Ntsd.exe jest dostarczany z systemem Windows, ale nowsza wersja jest dostarczana z wersją "Debugging Tools for Windows" package, która zawiera również bardzo podobny plik cdb.exe.

+0

To brzmi dziwnie, czy masz więcej szczegółów na temat tego, dlaczego to zadziała? Tracing używa OutputDebugString, a nie wiadomości. – jdigital

+3

Moje wspomnienie jest takie, że OutputDebugString używa sekcji pamięci współdzielonej z muteksem i zdarzenia do przekazywania danych. Zakładam (prawdopodobnie niepoprawnie), że otwarcie wspólnej sekcji lub sygnalizacja zdarzeń z procesu niskiej integralności do procesu o wyższej integralności jest zablokowana. –

+0

Daj psexec na wynos - działa świetnie. Niejasno przypominam sobie podobne problemy z przeszłości, że zapomniałem, jak rozwiązałem. Uruchamianie DbgView na niskim poziomie działa, ale raczej denerwuje! Czasowo jego Visual Studio ładuje symbole IE, które zabierają czas. Prawdopodobnie trochę przyspieszyłbym. – Mat

1

Dla twoich szybkich testów, czy Visual Studio wciąż działa? Jeśli tak, może to spowodować ten problem.

+0

Podążam za twoim tokiem myślenia - Visual Studio działa, ale nie debuguje. – Mat

+0

Więc zamknij i sprawdź, czy działa DebugView. – jdigital

+0

Wystarczy, aby potwierdzić: po prostu uruchom Visual Studio przechwytuje wiadomości i zatrzymuje je z widocznymi w DebugView. NIE wystarczy, aby uruchomić w nim sesję debugowania. W celu obejścia tego problemu wydaje się, że jeśli uruchomisz DebugView przed visual studio, nadal wyświetla wszystkie wiadomości. – Cray

Powiązane problemy