[英]Useless dumps in google-breakpad
我將google-breakpad插入了測試應用程序。 但是在應用程序崩潰后,我從轉儲中獲取了信息,在崩潰的線程中總是這樣:
google_breakpad::ExceptionHandler::WriteMinidumpOnHandlerThread
我究竟做錯了什么? 如何獲得有用的速成地點? 我的“安裝代碼”:
VS_ExceptionHandlerDescriptor(std::string dump_path) :
eh(std::wstring(dump_path.begin(), dump_path.end()), NULL, DumpCallback, NULL, true) {
}
我的崩潰部分代碼:
void doCrash()
{
delete reinterpret_cast<char*>(0xFEE1DEAD);
}
int main()
{
bool installed = VS_ExceptionHandler::InstallExceptionHandler("C://Users//fetterless/Desktop");
doCrash();
return 0;
}
線程堆棧跟蹤崩潰:
Thread 0 (crashed)
0 ntdll.dll + 0x1f911
eip = 0x77c2f911 esp = 0x0057f778 ebp = 0x0057f7e4 ebx = 0x00000000
esi = 0x00000040 edi = 0x00000000 eax = 0x00000000 ecx = 0xeedc6d7f
edx = 0x00000000 efl = 0x00000246
Found by: given as instruction pointer in context
1 kernel32.dll + 0x11193
eip = 0x75cc1194 esp = 0x0057f7ec ebp = 0x0057f7fc
Found by: previous frame's frame pointer
2 kernel32.dll + 0x11147
eip = 0x75cc1148 esp = 0x0057f804 ebp = 0x0057f810
Found by: previous frame's frame pointer
3 CrashTest.exe!google_breakpad::ExceptionHandler::WriteMinidumpOnHandlerThread(_EXCEPTION_POINTERS *,MDRawAssertionInfo *) [exception_handler.cc : 722 + 0x13]
eip = 0x0019d303 esp = 0x0057f818 ebp = 0x0057f82c
Found by: previous frame's frame pointer
4 CrashTest.exe!google_breakpad::ExceptionHandler::HandleException(_EXCEPTION_POINTERS *) [exception_handler.cc : 506 + 0xd]
eip = 0x0019bc65 esp = 0x0057f834 ebp = 0x0057f86c
Found by: call frame info
5 kernel32.dll + 0x50302
eip = 0x75d00303 esp = 0x0057f874 ebp = 0x0057f8f4
Found by: call frame info
6 ntdll.dll + 0x7344e
eip = 0x77c8344f esp = 0x0057f8fc ebp = 0x0057ffa8
Found by: previous frame's frame pointer
7 ntdll.dll + 0x39854
eip = 0x77c49855 esp = 0x0057ffb0 ebp = 0x0057ffc0
Found by: previous frame's frame pointer
UPD1:我發現來自不同計算機的同一個崩潰程序的轉儲具有不同的信息。 從上面的第一個轉儲無用,到另一個,它顯示了確切需要的堆棧和位置。 這東西怎么了?
UPD2:以下答案對我有所幫助。 我想補充一點,您可以安裝Cygwin並使用它的minidump_stackwalk生成有用的堆棧跟蹤。 如果您不想安裝它,而只需要用於解碼轉儲的東西,這里是存檔,您可以在其中找到minidump_stackwalk.exe及其所需的所有dll。 我從安裝的Cygwin中拿走了它們。 minidump_stackwalk檔案
我在某些Windows計算機上也遇到了同樣的情況。 有趣的是,Windows 10對我來說運行良好,而Windows 7和8.1給出的結果與您相似。 我只能得出結論,問題出在堆棧行程序(minidum_stackwalk.exe或Cygwin dll之一)上。 符號文件和.dmp文件都可以。 實際上,我從一台有問題的Windows機器上處理了符號和.dmp文件,並且能夠在我的Linux機器上生成不錯的正確調用堆棧。 因此,您也可以將其用作解決方法。 但是解決方案必須來自Google。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.