2016-04-21 38 views
2

進出口以下從這個urlQt的Breakpad導致

筆記我已經在我的代碼編譯(QT,窗戶,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 btw上

回答

0

答案是一般的Windows調試實踐。當您編譯/鏈接您的項目時,Microsoft Visual C++構建工具會生成Program Database File格式輸出。然後,當程序崩潰時,您將得到.dmp或minidump文件,您可以使用特定的函數名稱/行來展開堆棧。

如何做具有轉儲文件的實際調試?您可以使用這個答案作爲維基使用dmp和pdb文件進行調試:Analyzing Crash dumps in Visual Studio。只需用Visual Studio打開轉儲文件,然後指向程序數據庫,然後指向源代碼,您將在崩潰時看到所有線程/堆棧的圖片。

更新:我們還可以'空'轉儲'象徵'沒有名稱作爲回答:stackwalker loads all symbol files, but still doesn't symbolicate anything。我想這個工具的名字是minidump_stackwalk

+0

謝謝。這是我需要看到的問題。你搖滾:) – adviner

+0

我們這樣做,並回憶說有一種方法來產生更好的文字輸出。添加了更新。 – AlexanderVX

+0

@AlexanderVX不幸的是,minidump_stackwalk仍然沒有給我結果。事實上,我做錯了我不能使用VS2015的地方。我完全陷在這裏。我的問題完全如上所述。任何幫助,將不勝感激請。 –