首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

msdbg 如何才能显示出堆栈呢

2012-01-28 
msdbg 怎么才能显示出堆栈呢我想通过记录dump 在 随意某一点都能 得到此刻的 堆栈信息。借鉴了网上的例子做

msdbg 怎么才能显示出堆栈呢
我想通过记录dump 在 随意某一点都能 得到此刻的 堆栈信息。借鉴了网上的例子做了些改动。以下是简码:
void CMyTrace::DumpMiniDump(EXCEPTION_POINTERS excpInfo){//参数默认为一个被清零了的pointers
if (excpInfo.ExceptionRecord== NULL){
  __try {
RaiseException(1, 0, 0, NULL);//EXCEPTION_BREAKPOINT
}__except(excpInfo=*GetExceptionInformation(),EXCEPTION_EXECUTE_HANDLER){
DumpMiniDump(excpInfo);
}
}else{
MINIDUMP_EXCEPTION_INFORMATION eInfo;eInfo.ThreadId = GetCurrentThreadId();eInfo.ExceptionPointers = &excpInfo;eInfo.ClientPointers = FALSE;
MiniDumpWriteDump(GetCurrentProcess(),GetCurrentProcessId(),hFile, MiniDumpNormal , &eInfo ,NULL,NULL);
}
}
然后在 MFC dialog模式的 主程序里调用
 BOOL CMyApp::InitInstance()
{
CMyTrace::DumpMiniDump();
。。。。
}
我希望Mydbg能够显示出这样的效果:
CMyTrace::DumpMiniDump(_EXCEPTION_POINTERS {...}) line 300
CMyTrace::DumpMiniDump(_EXCEPTION_POINTERS {...}) line 296 + 13 bytes
CPosApp::InitInstance(CPosApp * const 0x7c85b008 {CPosApp 
AfxWinMain(HINSTANCE__ * 0x00400000, HINSTANCE__ * 0x00000000, char * 0x00141ef2, int 0x00000001) line 39 + 7 bytes
WinMain(HINSTANCE__ * 0x00400000, HINSTANCE__ * 0x00000000, char * 0x00141ef2, int 0x00000001) line 30
POS! WinMainCRTStartup + 224 bytes
KERNEL32! 7c817077()

但是打开dmp文件显示的栈信息 如下 所示:

ntdll!KiFastSystemCallRet
ntdll!NtCreateSection+0xc
kernel32!CreateFileMappingW+0x14a
ntdll!RtlpValidateHeap+0x20
ntdll!RtlpValidateHeap+0x20
ntdll!RtlDebugAllocateHeap+0x281
ntdll!RtlAllocateHeapSlowly+0x44
WARNING: Frame IP not in any known module. Following frames may be wrong.
0x90909090
0xe8000005
0xfff91350
0x909090c3
0x90909090
0xffffffff


请问 是不是 我的 RaiseException的参数用的不对 还是其他什么原因

[解决办法]

[解决办法]
不会,帮顶

热点排行