如何用windbg分析64位机上32位程序的dump文件

如何用windbg分析64位机上32位程序的dump文件,第1张

首先,我们使用孙弊windbg打开dump文件。这时候如果直接输入!analyze -v ,得到的堆栈结果肯定是看不到想看的则裂族结果的。

其次,加载wow64exts模块,因为需要这个模块帮助把64位的dump,转源迅换成32位的dump。输入 .load wow64exts

再次,进行转换。输入!sw

最后,按照分析32位dump文件的方法,分析这个dump。

需要为Windbg软件设置符号表路径,作为蓝屏原因分析数据库,否则软件将没有作用。单击File--选择Symbol File Path,在d出的对话框Symbol Path文本框中输入SRV*C:\Symbols*http://msdl.microsoft.com/download/symbols,单击OK。

设置完毕后单击File--选择Open Crash Dump来槐虚打开蓝屏文件,在d出的对话框中点选到C:\Windows\Minidump文件夹,单击我们要分析的蓝屏文件,单击打开。

在d出的对话框Save Information for workspace?(衫明灶是否保存信息到工作区)中单击Yes。(如果下次不想再被提示,可以勾选Don't ask again in the WinDbg session)。

接下来就是对文件进行分析,这需要一定的经验和知识。这里我们着重可以看一下System Uptime(开机时间)和Probably Caused By(可能引起故障的原因是)。

需要进一步分析,可以单击!analyze -v,此时我们可以从中提取到蓝屏错误代码和引起蓝屏的或扮程序名称,再通过网络搜索这些程序名和代码等方式弄清原因。

所以现在大家都开始分析dump了,上次微软的大牛们过来给表演了一下windbg,

1 安装windbg (从微软网站上下载,free), 运行windbg, 设置symbol path,

File- Symbol File Path,

输入SRV*C:\websymbols*http://msdl.microsoft.com/download/symbols,

如果你已经有了symbo path, 直接输入就可以了。

2. 生成一个dump, 可以用windbg提供的adplus命令来生成,或者有一袜此个简单的工具, IIS

Diagnostics, 这个也可以从微软下, 假设现在你的application hang 或者 crash 了,

运行这个Diagnostics, canceld出选择rule type的对话框,

然后选择process tab,

找到你要dump的进程, 右键生成dump就可以了, 然后可以顺便用这个工碰棚具直接分析了,还是说winbdg吧。

3. 现在dump有了, 运行windbg,打开这个dump (File- Open

Crash Dump...), 运行下面的几个命令.

.load path\SOS.dll

(path是全路经,

一般在C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727,

根据自己.net版本选不同的)

.reload -f mscorwks.dll!threads

(察看所有线程(managed),

这步一般就可以看到exception在哪一个线程了, 假设看到在 0 thread)~0s

(转到 0 thread)

!clrstack (查看call stack)

然后可以通过windbg上面的一些快捷功能打开 Process and Threads 窗口 和 call stack

窗口,双击call stack 里面的 function call, 就可以跳转到source code了。

!printException

(查看exception,笑好则 仅限于managed exception, 找到第一次被抛出来的exception address,

一看就知道哪个了)

!Printexception address

(查看具体的exception)入门结束,不求甚解,慢慢学习.


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/8206438.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-14
下一篇 2023-04-14

发表评论

登录后才能评论

评论列表(0条)

保存