windbg 分析 32 位进程的 64 位转储文件

场景:

x86 的项目在 x64 的 windows 机器上运行时出现未响应的情况,使用任务管理器创建该进程的转储文件

因为项目是 32 位的,所以使用 x86 的 windbg 来调试 dmp 文件,使用 kn 列出堆栈信息,出现了一些与项目代码无关的函数调用

windbg 分析 32 位进程的 64 位转储文件

 

后面研究发现,这个调用都是 wow64 模块处理 64 位 Windows 上的 32 位应用程序,所以无法识别堆栈,需要切换到该 32 位进程转储的 32 位视图

输入下图所展示的命令

windbg 分析 32 位进程的 64 位转储文件

即可切换到 32 位视图,再输入 kn 就可以查看堆栈

windbg 分析 32 位进程的 64 位转储文件

 

发现是 WaitForSingleObject 一直在等待线程的结束,导致程序未响应,最终对这块代码优化处理

笔记:

调试 dmp 文件时最好加载程序的符号文件(.pdb 文件),注意加载时输入符号文件的文件夹路径,并 .reload

查看是否加载成功,可以输入 lm 查看模块,加载成功的符合文件会显示在 dll 文件后面,比如

windbg 分析 32 位进程的 64 位转储文件

 

 相关链接:How to Find Crash in Windbg Log?

原文链接: https://www.cnblogs.com/strive-sun/p/16939301.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍;

也有高质量的技术群,里面有嵌入式、搜广推等BAT大佬

    windbg 分析 32 位进程的 64 位转储文件

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/404406

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年4月25日 下午4:34
下一篇 2023年4月25日 下午4:34

相关推荐