[英]Useless dumps in google-breakpad
I inserted google-breakpad into my test app. 我将google-breakpad插入了测试应用程序。 But after application crashes and I get info from the dump, in crashed thread always this:
但是在应用程序崩溃后,我从转储中获取了信息,在崩溃的线程中总是这样:
google_breakpad::ExceptionHandler::WriteMinidumpOnHandlerThread
What am I doing wrong? 我究竟做错了什么? How can I get usefull crash-place?
如何获得有用的速成地点? My "installing code":
我的“安装代码”:
VS_ExceptionHandlerDescriptor(std::string dump_path) :
eh(std::wstring(dump_path.begin(), dump_path.end()), NULL, DumpCallback, NULL, true) {
}
My crash-part code: 我的崩溃部分代码:
void doCrash()
{
delete reinterpret_cast<char*>(0xFEE1DEAD);
}
int main()
{
bool installed = VS_ExceptionHandler::InstallExceptionHandler("C://Users//fetterless/Desktop");
doCrash();
return 0;
}
Crashed thread stacktrace: 线程堆栈跟踪崩溃:
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: I Found that the dump from the same crash-program from different computer has different info. UPD1:我发现来自不同计算机的同一个崩溃程序的转储具有不同的信息。 From First dump useless as above, on another it shows exactly needed stack and place.
从上面的第一个转储无用,到另一个,它显示了确切需要的堆栈和位置。 What is wrong with this thing?
这东西怎么了?
UPD2: Answer below helped me. UPD2:以下答案对我有所帮助。 I want to add that you can install Cygwin and use it's minidump_stackwalk to produce usefull stack-trace.
我想补充一点,您可以安装Cygwin并使用它的minidump_stackwalk生成有用的堆栈跟踪。 If you don't want install it and need just stuff for decoding dump, here is archive in which you can find minidump_stackwalk.exe and all needed dll's for it.
如果您不想安装它,而只需要用于解码转储的东西,这里是存档,您可以在其中找到minidump_stackwalk.exe及其所需的所有dll。 I took them from my installed Cygwin.
我从安装的Cygwin中拿走了它们。 minidump_stackwalk archive
minidump_stackwalk档案
I am experiencing the same on some of the Windows machines. 我在某些Windows计算机上也遇到了同样的情况。 Interestingly, Windows 10 works fine for me whereas Windows 7 and 8.1 give results similar to yours.
有趣的是,Windows 10对我来说运行良好,而Windows 7和8.1给出的结果与您相似。 I can only conclude that the problem lies with the stack-walker (minidum_stackwalk.exe or one of the Cygwin dlls).
我只能得出结论,问题出在堆栈行程序(minidum_stackwalk.exe或Cygwin dll之一)上。 The symbol files and the .dmp file are OK.
符号文件和.dmp文件都可以。 I actually coped the symbols and the .dmp file from one such problematic Windows machine and was able to generate nice correct call stacks on my Linux box.
实际上,我从一台有问题的Windows机器上处理了符号和.dmp文件,并且能够在我的Linux机器上生成不错的正确调用堆栈。 So, you can also use this as a work-around.
因此,您也可以将其用作解决方法。 But a solution has to come from the Google guys.
但是解决方案必须来自Google。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.