找出程序崩溃的位置
之前碰到论坛里有几个好友,说程序不时的崩溃,什么 xxoo 不能 read 的!
如果光要是这个内存地址,估计你会疯掉~~
所以分享一下基本的调试技巧,需要准备的工具有 WinDbg + VC6.0,
下面是自己整理的一份自动生成 DUMP 文件的源代码,只需要添加到工程即可,源代码如
下:
MiniDump.h
MiniDump.cpp
<具体请参考附件 SRC 中,太大就不贴了>
1、在 CXXDlg::OnInitDialog()中添加这样一段:
1. BOOL CTestDlg::OnInitDialog()
2. {
3. CDialog::OnInitDialog();
4.
5. // ......
6. SetUnhandledExceptionFilter(CrashReportEx);
7. HMODULE hKernel32;
8.
9. // Try to get MiniDumpWriteDump() address.
10. hDbgHelp = LoadLibrary("DBGHELP.DLL");
11. MiniDumpWriteDump_ =
(MINIDUMP_WRITE_DUMP)GetProcAddress(hDbgHelp,
"MiniDumpWriteDump");
12. // d("hDbgHelp=%X, MiniDumpWriteDump_=%X",
hDbgHelp, MiniDumpWriteDump_);
13.
14. // Try to get Tool Help library functions.
15. hKernel32 = GetModuleHandle("KERNEL32");
16. CreateToolhelp32Snapshot_ =
(CREATE_TOOL_HELP32_SNAPSHOT)GetProcAddress(hKernel32,
"CreateToolhelp32Snapshot");
17. Module32First_ =
(MODULE32_FIRST)GetProcAddress(hKernel32, "Module32First");
18. Module32Next_ = (MODULE32_NEST)GetProcAddress(hKernel32,
"Module32Next");
19. }
复制代码