dump:win Release下尝试
This commit is contained in:
parent
dc4435d4be
commit
43bc2fd733
123
cpp/崩溃堆栈打印.txt
123
cpp/崩溃堆栈打印.txt
@ -1,7 +1,7 @@
|
||||
《Linux部分》
|
||||
【Debug模式】
|
||||
【Linux => Debug模式】
|
||||
测试:https://github.com/bombela/backward-cpp
|
||||
尽头文件,配合#define BACKWARD_HAS_BFD 1和sudo apt install binutils-dev
|
||||
仅头文件的库,配合#define BACKWARD_HAS_BFD 1和sudo apt install binutils-dev
|
||||
可以实现Debug下精准找点。
|
||||
也有apt-get install libdw-dev(#define BACKWARD_HAS_DW 1)和
|
||||
apt-get install libdwarf-dev(#define BACKWARD_HAS_DWARF 1)这两个没测试。
|
||||
@ -51,7 +51,7 @@ int main()
|
||||
编译链接:target_link_libraries(dmeo PRIVATE bfd dl)
|
||||
|
||||
《Windows部分》
|
||||
【Debug模式】
|
||||
【Windows => Debug模式】
|
||||
#include "backward.hpp"
|
||||
#include <windows.h>
|
||||
使用方法:
|
||||
@ -119,4 +119,119 @@ int main()
|
||||
return 0;
|
||||
}
|
||||
编译链接:
|
||||
target_link_libraries(dumpdemo PRIVATE DbgHelp)
|
||||
target_link_libraries(dumpdemo PRIVATE DbgHelp)
|
||||
【Windows => Release模式】
|
||||
实际测试,如果想生成dmp文件,就不能使用backward库(两者选一个)(不使用backward::SignalHandling sh;)。
|
||||
void CreateMiniDump(EXCEPTION_POINTERS* exception) {
|
||||
HANDLE hFile = CreateFile("crash114.dmp", GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
|
||||
if (hFile == INVALID_HANDLE_VALUE) {
|
||||
return;
|
||||
};
|
||||
MINIDUMP_EXCEPTION_INFORMATION info;
|
||||
info.ThreadId = GetCurrentThreadId();
|
||||
info.ExceptionPointers = exception;
|
||||
info.ClientPointers = TRUE;
|
||||
MiniDumpWriteDump(
|
||||
GetCurrentProcess(), GetCurrentProcessId(), hFile,
|
||||
MiniDumpNormal, &info, NULL, NULL
|
||||
);
|
||||
CloseHandle(hFile);
|
||||
}
|
||||
使用backward堆栈信息打印有限,如下(测试代码见上方):
|
||||
Done
|
||||
Stack trace (most recent call last):
|
||||
#3 Object "", at 00007FFBD4A4E8D7, in BaseThreadInitThunk
|
||||
#2 Object "", at 00007FFBD31C37B0, in wcsrchr
|
||||
试图访问无效的地址。
|
||||
|
||||
#1 Object "", at 00007FF691A2208B, in ??
|
||||
试图访问无效的地址。
|
||||
|
||||
#0 Object "", at 00007FF691A27EC2, in ??
|
||||
而使用WinDbg分析Dump文件,信息如下:
|
||||
FILE_IN_CAB: crash114.dmp
|
||||
|
||||
CONTEXT: (.ecxr)
|
||||
rax=0000000000000000 rbx=0000019f92279e60 rcx=00000018c2d828f9
|
||||
rdx=00000018ca1b2b0e rsi=00004e94914f0000 rdi=000009ac1b967bb8
|
||||
rip=00007ff7b2f41682 rsp=00000084c57ff970 rbp=0000000000000000
|
||||
r8=0000000000000083 r9=000000007ffe7000 r10=0000000000000001
|
||||
r11=fffffffff8bcfdeb r12=0000000000000000 r13=0000000000000000
|
||||
r14=b2f4fc0794908cf3 r15=0000000000000000
|
||||
iopl=0 nv up ei pl zr na po nc
|
||||
cs=0033 ss=002b ds=002b es=002b fs=0053 gs=002b efl=00010246
|
||||
dumpdemo+0x1682:
|
||||
00007ff7`b2f41682 c70021000000 mov dword ptr [rax],21h ds:00000000`00000000=????????
|
||||
Resetting default scope
|
||||
|
||||
EXCEPTION_RECORD: (.exr -1)
|
||||
ExceptionAddress: 00007ff7b2f41682 (dumpdemo+0x0000000000001682)
|
||||
ExceptionCode: c0000005 (Access violation)
|
||||
ExceptionFlags: 00000000
|
||||
NumberParameters: 2
|
||||
Parameter[0]: 0000000000000001
|
||||
Parameter[1]: 0000000000000000
|
||||
Attempt to write to address 0000000000000000
|
||||
|
||||
PROCESS_NAME: dumpdemo.exe
|
||||
|
||||
WRITE_ADDRESS: 0000000000000000
|
||||
|
||||
ERROR_CODE: (NTSTATUS) 0xc0000005 - 0x%p 0x%p %s
|
||||
|
||||
EXCEPTION_CODE_STR: c0000005
|
||||
|
||||
EXCEPTION_PARAMETER1: 0000000000000001
|
||||
|
||||
EXCEPTION_PARAMETER2: 0000000000000000
|
||||
|
||||
STACK_TEXT:
|
||||
00000084`c57ff970 00007ff7`b2f4126b : 000009aa`f19089b8 0000019f`92279e60 00000000`00000000 00000000`00000000 : dumpdemo+0x1682
|
||||
00000084`c57ff9b0 00007ffb`d31c37b0 : 0000019f`92275720 00000000`00000000 00000000`00000000 00000000`00000000 : dumpdemo+0x126b
|
||||
00000084`c57ff9e0 00007ffb`d4a4e8d7 : 00000000`00000000 00000000`00000000 00000000`00000000 00000000`00000000 : ucrtbase!thread_start<unsigned int (__cdecl*)(void *),1>+0x30
|
||||
00000084`c57ffa10 00007ffb`d5b314fc : 00000000`00000000 00000000`00000000 000004f0`fffffb30 000004d0`fffffb30 : kernel32!BaseThreadInitThunk+0x17
|
||||
00000084`c57ffa40 00000000`00000000 : 00000000`00000000 00000000`00000000 00000000`00000000 00000000`00000000 : ntdll!RtlUserThreadStart+0x2c
|
||||
|
||||
|
||||
STACK_COMMAND: ~4s; .ecxr ; kb
|
||||
|
||||
SYMBOL_NAME: dumpdemo+1682
|
||||
|
||||
MODULE_NAME: dumpdemo
|
||||
|
||||
IMAGE_NAME: dumpdemo.exe
|
||||
|
||||
FAILURE_BUCKET_ID: NULL_POINTER_WRITE_c0000005_dumpdemo.exe!Unknown
|
||||
|
||||
OS_VERSION: 10.0.26100.1
|
||||
|
||||
BUILDLAB_STR: ge_release
|
||||
|
||||
OSPLATFORM_TYPE: x64
|
||||
|
||||
OSNAME: Windows 10
|
||||
|
||||
FAILURE_ID_HASH: {78a98d01-ecf2-dbb7-c5b9-5fb9cd0cc5e2}
|
||||
|
||||
Followup: MachineOwner
|
||||
---------
|
||||
|
||||
0:004> .ecxr
|
||||
rax=0000000000000000 rbx=0000019f92279e60 rcx=00000018c2d828f9
|
||||
rdx=00000018ca1b2b0e rsi=00004e94914f0000 rdi=000009ac1b967bb8
|
||||
rip=00007ff7b2f41682 rsp=00000084c57ff970 rbp=0000000000000000
|
||||
r8=0000000000000083 r9=000000007ffe7000 r10=0000000000000001
|
||||
r11=fffffffff8bcfdeb r12=0000000000000000 r13=0000000000000000
|
||||
r14=b2f4fc0794908cf3 r15=0000000000000000
|
||||
iopl=0 nv up ei pl zr na po nc
|
||||
cs=0033 ss=002b ds=002b es=002b fs=0053 gs=002b efl=00010246
|
||||
dumpdemo+0x1682:
|
||||
00007ff7`b2f41682 c70021000000 mov dword ptr [rax],21h ds:00000000`00000000=????????
|
||||
0:004> kb
|
||||
*** Stack trace for last set context - .thread/.cxr resets it
|
||||
# RetAddr : Args to Child : Call Site
|
||||
00 00007ff7`b2f4126b : 000009aa`f19089b8 0000019f`92279e60 00000000`00000000 00000000`00000000 : dumpdemo+0x1682
|
||||
01 00007ffb`d31c37b0 : 0000019f`92275720 00000000`00000000 00000000`00000000 00000000`00000000 : dumpdemo+0x126b
|
||||
02 00007ffb`d4a4e8d7 : 00000000`00000000 00000000`00000000 00000000`00000000 00000000`00000000 : ucrtbase!thread_start<unsigned int (__cdecl*)(void *),1>+0x30
|
||||
03 00007ffb`d5b314fc : 00000000`00000000 00000000`00000000 000004f0`fffffb30 000004d0`fffffb30 : kernel32!BaseThreadInitThunk+0x17
|
||||
04 00000000`00000000 : 00000000`00000000 00000000`00000000 00000000`00000000 00000000`00000000 : ntdll!RtlUserThreadStart+0x2c
|
||||
|
Loading…
x
Reference in New Issue
Block a user