1.地址:
(1.)http://download.csdn.net/detail/wu_123_456/7321919 这是我的demo,大家可以下载下来在VS2008中运行。
(2.)http://download.csdn.net/detail/wu_123_456/7321967 这个是打开.dmp文件的软件
2.解析:
代码在上篇blog中已经阐述,我的代码中主要用两条语句测试:
void Cdump_demoDlg::OnBnClickedOk()
{
// TODO: 在此添加控件通知处理程序代码
char* p = "hello world";
p[0]='H';
OnOK();
}
很明显p[0]='H';语句是错误的,“hello world”存储在文字常量区,这个区域是只读的,不能进行写操作。
3.运行:
生成两个文件:1个是.dmp文件,1个是txt文件
(1.)
(2.)
4.分析:
(1.)找到windbg.exe
(2.)打开.dmp文件
打开后,如果你没怎么学内存调试(汇编语言),你会发现里面的东西根本没法定位bug的位置
(3.)!analyze -v
我们需要借助一个命令来进一步分析dmp,这个命令就是:!analyze -v,这个命令能够自动分析绝大部分bug原因。
(4.)定位bug