Search code examples
qtgoogle-breakpad

Qt Breakpad results


Im following the notes from this url

I have it compiled on my code (Qt, windows, VS 2015) I run it in debug mode and when it crashes I do the following:

Create the symbol file

dump_syms.exe ZendeskClient.exe > ZendeskClient.sym

Using the dmp and the symbol file generate a text file (tried each one)

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

But I dont see anything that shows what caused the crash in the app. I see in the text (600 lines)(Its not all the information, just enough hopefully to show what i'm trying to show. The rest of the data is somewhat the same):

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

Is there something wrong in the way i'm building the output? Im on windows btw


Solution

  • The answer is general to debug practice on Windows. Microsoft Visual C++ build tools produce Program Database File format output when you compile/link your project. And then when the program crashes you get .dmp or minidump file you can unwind the stack with specific function names / lines.

    How to do the actual debug having the dump file? You can use this answer as Wiki for debugging using both dmp and pdb files: Analyzing Crash dumps in Visual Studio. Just open dump file with Visual Studio and then point to program database and then source code and you will see the picture of all threads/stacks at the moment of crash.

    UPDATE: We can also 'symbolicate' the 'empty' dump without names as answered: stackwalker loads all symbol files, but still doesn't symbolicate anything. I guess that the tool name is minidump_stackwalk.