2014-06-13 15 views
7

Mam aplikację C++, która zawiesza się na komputerze jakiejś osoby na drugim końcu świata. Nie ma sposobu, aby to zasymulować lub uzyskać ten sam komputer. Ta osoba nie jest programistą, więc nie mogę go naprawdę poprosić o zainstalowanie Visual Studio. Mam dość głębokie dzienniki debugowania, ale nie ujawniły niczego użytecznego.Uzyskaj ślad stosu awarii w systemie Windows bez instalowania programu Visual Studio? (C++)

Czy istnieje narzędzie, które może wygenerować ślad stosu aplikacji w momencie awarii? Takie rzeczy są dostępne w systemie OSX, ale wydaje się, że Windows go nie ma.

+2

http://msdn.microsoft.com/en-gb/library/windows/hardware/ff551063%28v=vs.85%29.aspx – ldgorman

Odpowiedz

3

Możesz użyć procdump. Może być ustawiony jako debugger, aby automatycznie tworzyć zrzuty do awaryjnych procesów.

Procdump jest częścią narzędzi Sysinternal i można znaleźć na stronie:

http://technet.microsoft.com/en-us/sysinternals/dd996900.aspx

Odpowiednich przełączniki:

Tworzenie zrzutu dla zawieszonych aplikacji:

napisać mini zrzutu dla procesu o nazwie "hang.exe", gdy jeden z nich jest niedziałający przez więcej niż 5 sekund:

C:\>procdump -h hang.exe hungwindow.dmp 

Automatyczne tworzenie wysypisk rozbijających aplikacji:

rejestracja jako Just-in-Time (AeDebug) debugger. Tworzy pełne zrzuty w c: \ dumps.

C:\>procdump -ma -i c:\dumps 
+0

Próbowałem na jednym komputerze i działa, ale w wirtualnym maszyna, na której nie zainstalowano żadnych narzędzi programistycznych, wydaje się nie działać. Zasadniczo po uruchomieniu wyświetla jakieś okno terminala z jakimś tekstem, a potem okno znika, więc nie mam nawet pojęcia, co tam było ... –

1

używanie przez firmę Google lib sprawia, że ​​Minidump dla MSVC do debugowania. CrashRpt

+1

Dla jasności, to nie jest "lib google", to po prostu projekt open source i znajduje się teraz pod adresem http://crashrpt.sourceforge.net/ – Perry