2008-11-12 14 views
7

Obecnie nazywamy MiniDumpWriteDump z flagami MiniDumpNormal | MiniDumpWithIndirectlyReferencedMemory. Działa to dobrze dla wewnętrznych kompilacji w konfiguracji debugowania, ale nie podaje tak dużo informacji, jakich potrzebujemy w konfiguracji wydania.Jakie ustawienia powinienem użyć w Minidumpach?

W wersji, dane minizrzutu zawierają wystarczającą ilość informacji o stosie, aby debugger mógł ustalić, gdzie w kodzie wystąpił błąd, ale nie ma innych danych. Nie oznacza to po prostu, że brakuje lokalnych zmiennych, ponieważ zostały zoptymalizowane, jak można się spodziewać w wersji Release - nie ma nic użytecznego poza stosem wywołań i aktualną linią kodu. Brak rejestrów, brak miejscowych, brak globaliów, brak obiektów wskazanych przez mieszkańców - nic. Nie otrzymujemy nawet "tego", co pozwoliłoby nam wyświetlić bieżący obiekt. Taki był sens używania MiniDumpWithIndirectlyReferencedMemory - powinien on zawierać pamięć przywoływaną przez locale i zmienne stosu, ale nie wydaje się.

Jakich flag powinniśmy użyć zamiast tego? Nie chcemy używać MiniDumpWithFullMemory i zaczynamy generować 600MB + zrzutów, ale z przyjemnością rozwijalibyśmy zrzuty nieco poza 90KB, które obecnie otrzymujemy, jeśli oznaczało to uzyskanie bardziej przydatnych danych. Być może powinniśmy używać MiniDumpWithDataSegments (globals) lub ...?

+0

Jakiego wyjątku doszło do awarii twojego programu? – HelloWorld

Odpowiedz

0

WinDbg wykorzystuje następujące flagi na .dump /ma:

0:003> .dumpdebug 
----- User Mini Dump Analysis 

MINIDUMP_HEADER: 
Version   A793 (62F0) 
NumberOfStreams 13 
Flags   41826 
       0002 MiniDumpWithFullMemory 
       0004 MiniDumpWithHandleData 
       0020 MiniDumpWithUnloadedModules 
       0800 MiniDumpWithFullMemoryInfo 
       1000 MiniDumpWithThreadInfo 
       40000 MiniDumpWithTokenInformation 

Proponuję zastąpić MiniDumpWithFullMemory przez MiniDumpWithIndirectlyReferencedMemory.

+0

Flagi są [zależne od wersji] (https://msdn.microsoft.com/en-us/library/windows/desktop/ms680519%28v=vs.85%29.aspx). Upewnij się, że masz nową wersję pliku dbghelp.dll, która obsługuje tę flagę –

Powiązane problemy