.NET应用程序调试—原理、工具、方法(6)
图12:(ntsd.exe打开调试程序)
同样,在WinDbg中也有一个附加进程的选项,NTSD也是一样,操作起来都比较简单,需要注意的是当你对进程进行附加时要清楚此进程是多少位的,然后你需要选择正确的调试器进行调试。
4.2.不中断调试或者称事后调试(对Dump文件进行调试)
在不能够对被调试程序直接调试时我们就需要此程序的进程镜像文件,此镜像文件就是进程在某一个时刻的快照,通过分析这个快照,我们也是可以定位出问题的。首先我们需要使用适当的工具来获取进程的dump文件,操作系统本身的任务管理器就有这个功能,dump文件的存放位置默认在用户信息临时文件下面,比如:XXX\Users\Administrator\AppData\Local\Temp,获取完dump文件后任务管理器会有提示路径的。
图13:(使用任务管理器获取dump文件)
图14:
使用任务管理器获取dump文件固然很方便,但是有一个问题就是如果当前机器是64位的,并且你的进程是以32位方式运行的,那么此时你获取出来的dump文件是64位的,当你通过32位的调试器无法进行分析,甚至会有各种其他的问题,这些问题就是因为获取dump文件的机器环境和你预想的不一致。这个时候我们希望能够通过很明了的方式来获取dump文件,就是通过调试器来获取dump文件。
通过调试器来获取dump文件有很多好处,可以设置很多选项,包括只获取进程的哪部分镜像数据等。
先通过tlist.exe查看所有进程列表,会有一个进程ID号,有了ID号才能进行获取。
图15:(tlist、ntsd 进入到指定进程中)
进入到ntsd调试器中,然后使用.dump/mf d:\order.dmp 命令获取dump文件到D盘。
图16:(使用NTSD.exe获取dump文件)
相关新闻>>
- 发表评论
-
- 最新评论 更多>>