Qt Breakpad 结果
Qt Breakpad results
我正在关注此 url
中的注释
我在我的代码中编译了它(Qt,windows,VS 2015)
我 运行 它处于调试模式,当它崩溃时我执行以下操作:
创建符号文件
dump_syms.exe ZendeskClient.exe > ZendeskClient.sym
使用dmp和符号文件生成文本文件(每一个都试过了)
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
但我没有看到任何显示导致应用程序崩溃的原因。我在文本中看到(600 行)(它不是所有信息,只是希望足以显示我要显示的内容。其余数据有些相同):
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
我构建输出的方式有问题吗?我在 windows 顺便说一句
Windows 上的调试实践的答案是通用的。当您 compile/link 您的项目时,Microsoft Visual C++ 构建工具会生成 Program Database File 格式的输出。然后当程序崩溃时,您会得到 .dmp 或小型转储文件,您可以使用特定的函数名称/行展开堆栈。
如何进行具有转储文件的实际调试?您可以将此答案作为 Wiki 使用 dmp 和 pdb 文件进行调试:Analyzing Crash dumps in Visual Studio。只需用 Visual Studio 打开转储文件,然后指向程序数据库,然后指向源代码,您将在崩溃时看到所有 threads/stacks 的图片。
更新:我们也可以 'symbolicate' 'empty' 没有名字的转储如回答:stackwalker loads all symbol files, but still doesn't symbolicate anything. I guess that the tool name is minidump_stackwalk.
我正在关注此 url
中的注释我在我的代码中编译了它(Qt,windows,VS 2015) 我 运行 它处于调试模式,当它崩溃时我执行以下操作:
创建符号文件
dump_syms.exe ZendeskClient.exe > ZendeskClient.sym
使用dmp和符号文件生成文本文件(每一个都试过了)
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
但我没有看到任何显示导致应用程序崩溃的原因。我在文本中看到(600 行)(它不是所有信息,只是希望足以显示我要显示的内容。其余数据有些相同):
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
我构建输出的方式有问题吗?我在 windows 顺便说一句
Windows 上的调试实践的答案是通用的。当您 compile/link 您的项目时,Microsoft Visual C++ 构建工具会生成 Program Database File 格式的输出。然后当程序崩溃时,您会得到 .dmp 或小型转储文件,您可以使用特定的函数名称/行展开堆栈。
如何进行具有转储文件的实际调试?您可以将此答案作为 Wiki 使用 dmp 和 pdb 文件进行调试:Analyzing Crash dumps in Visual Studio。只需用 Visual Studio 打开转储文件,然后指向程序数据库,然后指向源代码,您将在崩溃时看到所有 threads/stacks 的图片。
更新:我们也可以 'symbolicate' 'empty' 没有名字的转储如回答:stackwalker loads all symbol files, but still doesn't symbolicate anything. I guess that the tool name is minidump_stackwalk.