2016-04-21 3 views
2

Im Anschluss an die Notizen von diesem urlQt Breakpad Ergebnisse

ich es auf meinem Code kompiliert haben (Qt, Fenster, VS 2015) Ich betreibe es im Debug-Modus und wenn er abstürzt ich folgendes tun:

das Dateisymbol erstellen

dump_syms.exe ZendeskClient.exe > ZendeskClient.sym 

DMP und Verwenden der Symboldatei

minidump_stackwalk.exe filename.dmp symbols > ZendeskClient.txt 2>&1 
minidump_stackwalk.exe filename.dmp ZendeskClient.sym > ZendeskClient1.txt 2>&1 
minidump_stackwalk.exe filename.dmp ZendeskClient.sym symbols > ZendeskClient2.txt 2>&1 
eine Textdatei (versucht jedes) erzeugen

Aber ich sehe nichts, was zeigt, was den Absturz in der App verursacht hat. Ich sehe im Text (600 Zeilen) (Es ist nicht alle Informationen, gerade genug, um hoffentlich zu zeigen, was ich versuche Der Rest der Daten zu zeigen, etwas ist das gleiche.):

2016-04-20 21:00:32: minidump_processor.cc:264: INFO: Processing minidump in file C:\Users\adviner\c62072b9-3bf7-42b6-b6f2-28c3ccf9546f.dmp 
2016-04-20 21:00:32: minidump.cc:3500: INFO: Minidump opened minidump C:\Users\adviner\c62072b9-3bf7-42b6-b6f2-28c3ccf9546f.dmp 
2016-04-20 21:00:32: minidump.cc:3545: INFO: Minidump not byte-swapping minidump 
2016-04-20 21:00:32: minidump.cc:3902: INFO: GetStream: type 1197932546 not present 
2016-04-20 21:00:32: minidump.cc:1945: INFO: MinidumpModule could not determine version for C:\Projects\PersonalApps\Build\Windows\ZendeskClient\debug\ZendeskClient.exe 
2016-04-20 21:00:32: minidump_processor.cc:116: INFO: Minidump C:\Users\adviner\c62072b9-3bf7-42b6-b6f2-28c3ccf9546f.dmp has CPU info, OS info, 

.... 

CPU: x86 
    GenuineIntel family 6 model 78 stepping 3 
    4 CPUs 

Crash reason: EXCEPTION_ACCESS_VIOLATION_READ 
Crash address: 0xffffffffcdcdcddd 

Thread 0 (crashed) 
0 ntdll.dll + 0x76bfc 
    eip = 0x77bc6bfc esp = 0x0018bb08 ebp = 0x0018bb78 ebx = 0x00000001 
    esi = 0x00000000 edi = 0x000001fc eax = 0x00000000 ecx = 0xcdcdcddd 
    edx = 0x0018c570 efl = 0x00200202 
    Found by: given as instruction pointer in context 
1 KERNELBASE.dll + 0xae131 
    eip = 0x7795e132 esp = 0x0018bb80 ebp = 0x0018bb8c 
    Found by: previous frame's frame pointer 
2 ZendeskClient.exe + 0xfcf3f 
    eip = 0x002fcf40 esp = 0x0018bb94 ebp = 0x0018bba4 
    Found by: previous frame's frame pointer 
3 ZendeskClient.exe + 0xfc9e7 
    eip = 0x002fc9e8 esp = 0x0018bbac ebp = 0x0018bbe4 
    Found by: previous frame's frame pointer 
4 KERNELBASE.dll + 0x13f471 
    eip = 0x779ef472 esp = 0x0018bbec ebp = 0x0018bc74 
    Found by: previous frame's frame pointer 
5 ntdll.dll + 0xa35ed 
    eip = 0x77bf35ee esp = 0x0018bc7c ebp = 0x0018fb8c 
    Found by: previous frame's frame pointer 
6 ntdll.dll + 0x65dad 
    eip = 0x77bb5dae esp = 0x0018fb94 ebp = 0x0018fb9c 
    Found by: previous frame's frame pointer 

... 

Loaded modules: 
0x00200000 - 0x003e9fff ZendeskClient.exe ??? (main) 
0x00bf0000 - 0x00d62fff ucrtbased.dll 10.0.10240.16384 
0x02490000 - 0x024b2fff WINMMBASE.dll 6.2.10586.0 
0x02650000 - 0x0266cfff qicnsd.dll 5.6.0.0 
0x029d0000 - 0x02bc8fff qwindowsd.dll 5.6.0.0 
0x02d50000 - 0x02d68fff qicod.dll 5.6.0.0 
0x02d70000 - 0x02d85fff qsvgd.dll 5.6.0.0 
0x02d90000 - 0x02da4fff qtgad.dll 5.6.0.0 
0x02dd0000 - 0x02f0efff dbghelp.dll 6.2.10586.0 

Gibt es etwas, falsch in der Art, wie ich die Ausgabe baue? Im auf Windows btw

Antwort

0

Die Antwort ist allgemein Debugging-Praxis auf Windows. Microsoft Visual C++ - Erstellungstools geben die Program Database File-Formatausgabe aus, wenn Sie Ihr Projekt kompilieren/verknüpfen. Und dann, wenn das Programm abstürzt erhalten Sie .dmp oder Minidump-Datei können Sie den Stapel mit bestimmten Funktionsnamen/Zeilen abwickeln.

Wie das eigentliche Debugging mit der Dump-Datei zu tun? Sie können diese Antwort als Wiki zum Debuggen mit dmp- und pdb-Dateien verwenden: Analyzing Crash dumps in Visual Studio. Öffnen Sie einfach die Dump-Datei mit Visual Studio und zeigen Sie dann auf die Programmdatenbank und dann den Quellcode und Sie sehen das Bild aller Threads/Stacks im Moment des Absturzes.

UPDATE: Wir können den 'leeren' Speicherauszug auch symbolisieren, ohne Namen wie beantwortet: stackwalker loads all symbol files, but still doesn't symbolicate anything. Ich nehme an, dass der Werkzeugname minidump_stackwalk ist.

+0

Vielen Dank. Das war es, was ich brauchte, um das Problem zu sehen. Sie rocken :) – adviner

+0

Wir tun das und erinnerte daran, dass es eine Möglichkeit gibt, bessere Textausgabe zu produzieren. Ein Update hinzugefügt. – AlexanderVX

+0

@AlexanderVX Leider gibt mir der Minidump_stackwalk immer noch nicht die Ergebnisse. Tatsächlich mache ich etwas falsch, wo ich VS2015 auch nicht verwenden kann. Ich bin hier völlig stecken geblieben. Mein Problem ist genau wie oben beschrieben. Jede Hilfe würde bitte geschätzt werden. –