对于堆崩溃问题,可用Windbg.exe 来调试。
开启完全页堆
gflags -p /enable test.exe /full /unaligned
运行 Windbg.exe
File->open excutable,找开程序
命令:g 执行程序
命令:kb 调出堆栈。通过堆栈调用可以看出错在哪 一行。如:test.c @ 555,即第test.c里第555行。
命令:dv /V VariableName 查看变量VariableName 的值
调试完后要关闭对于调试程序的gflags设置
gflags -p /disable test.exe
8. 之后可用 gflags -p 查询本机对于哪些程序设置了gflags
查看变量值参考 http://www.cnblogs.com/awpatp/archive/2011/01/02/1924237.html
一般情况下,最简单用法如下:
1.打开windgb.exe,拖入dump文件(确保模块对应的pdb文件与dump在同一目录),然后输入!anzlyze -v,让其自动分析。一般这一条命令足矣!!
!analyze -v // 详细显示当前异常信息
!analyze -hang // 诊断线程调用栈上是否有任何线程阻塞了其他线程
!analyze -f // 查看异常分析信息,尽管调试器并未诊断出异常
!tls -1 // 显示当前线程所有的slot信息
!tls 2 // 显示当前线程索引为2的slot信息
!peb // 格式化输出PEB信息(process's environment block)
参考:http://www.cnblogs.com/dsky/archive/2013/05/15/3079465.html
http://www.cppblog.com/sandy/archive/2008/09/27/62877.html
http://www.cnblogs.com/cswuyg/archive/2011/09/27/gflags.html
http://msdn.microsoft.com/en-us/windows/hardware/gg463028.aspx
http://www.cnblogs.com/guanlaiy/category/438739.html
dump文件生成:
windows产生dump英文阐述
http://book.51cto.com/art/200911/161415.htm
WinDBG 技巧:如何生成Dump 文件
http://wingeek.blog.51cto.com/1226974/273964
如何使用 Userdump.exe 工具创建转储文件
http://blog.sina.com.cn/s/blog_4e0c21cc0100wtct.html