内容简介:说明:本文很早就发布在我的博客上了,当时总结的有些问题,本次重新整理完善后再次发布。猜你喜欢:转储文件系列:
说明:本文很早就发布在我的博客上了,当时总结的有些问题,本次重新整理完善后再次发布。
前言
有时候我们非常想知道当前系统内核的一些状态,比如查看当前系统加载了哪些驱动,查看某个进程外 COM
调用卡在哪里了,等等。如果我们可以调试系统内核,或者抓取一个系统转储来做事后调试,该多好啊。我们可以通过如下方法得到系统转储:
1. 双机内核调试(需要另外一台机器来做双机调试)
2. 让系统崩溃(可以使用 sysinternals
中的 notmyfault
或者 使用快捷键让系统崩溃,并设置 系统崩溃的时候自动保存转储文件)(有点小题大作了)。
3. 使用 sysinternals
中的 livekd
,不需要特殊设置,绿色环保。
以上几种方案中,使用 livekd
最方便快捷。如果有哪位小伙伴儿对其它几种方法感兴趣,可以查看之前的转储系列文章。为了能顺利使用 livekd
,我们需要解决几个问题。
使用帮助
-
可以运行
livekd -?
来查看使用方法。
-
通过
-k
来指定kd.exe
的路径。 -
-m windbg kd.exe
-
可以传递参数给
kd.exe
或者windbg.exe
。
问题总结
1. 使用 livekd
进行本地内核调试,需要管理员权限,没以管理员权限运行会给出对应的错误提示。
2. livekd
需要内核文件的调试符号的支持。 可以通过环境变量 _NT_SYMBOL_PATH
来告诉 livekd
到哪里加载调试符号。 如果没设置也没关系, livekd
会自动下载需要的调试符号到某个位置,遇到下图的情况,输入 y
即可。
-
也可以通过命令行参数
-y
来指定符号路径。与使用_NT_SYMBOL_PATH
效果一样。最好设置环境变量_NT_SYMBOL_PATH
,对所有调试器都有用。 -
我本地的设置为:
_NT_SYMBOL_PATH=SRV*C:\mssymbols\*http://msdl.microsoft.com/download/symbols
3. livekd
需要内核调试器( kd.exe
或 windbg.exe
)的支持,可以通过命令行参数 -k
指定 kd.exe
的完整路径。 通过 -k
参数指定 kd.exe
的路径的时候,如果有空格,需要用 ""
包起来,否则可能报如下错误:
4. 下载符号文件需要 symsrv.dll
和 dbghelp.dll
的支持,请确保 livekd
可以顺利加载这两个文件。 如果出现上图中的错误,请按照提示加上 -vsym
再次运行,可以查看到更详细的问题。我这里是因为不能加载 symsrv.dll
导致的。
5. 如果以上都已经设置正确,但还是报错,可以使用 -vsym
参数查看具体的错误提示。因为最近微软符号服务器在国内连接有点困难。所以大概率会遇到下面的问题。
遇到这个问题,没有什么好的解决办法。只能想办法连上微软符号服务器,或者先下载一份对应的文件,放到对应的查找路径下。
说明:
-
kd.exe livekd.exe 64 64 livekd.exe kd.exe symsrv.dll livekd.exe kd.exe symsrv.dll
-
如果还是找不到依赖的文件,我们可以把依赖的文件拷贝到
livekd.exe
同目录下再运行。
6. 如果以上几步设置好了,运行 livekd
应该没问题了。剩下的就是通过 livekd -?
来熟悉用法了,祝各位好运。贴一张正常运行的效果图。
说明:如果之前没加载过符号文件的话,可能会花一定的时间加载符号。请耐心等待。
总结
-
livekd
可以非常方便的获取一份系统转储,不用预先做任何设置,真是太有用了。 -
-vsym
可谓是排查livekd
不能正常工作的首要选项。遇到问题,加上它就对了。 -
调试符号对于调试是极其重要的。
猜你喜欢:
转储文件系列:
使用 VMware + win10 + VirtualKD + windbg 从零搭建双机内核调试环境
调试系列:
调试实战——你知道怎么使用DebugView查看调试信息吗?
调试实战——崩溃在ComFriendlyWaitMtaThreadProc
调试实战——使用windbg调试崩溃在ole32!CStdMarshal::DisconnectSrvIPIDs
排错系列:
排错实战——使用process explorer替换任务管理器
排错实战——通过对比分析sysinternals事件修复程序功能异常
VS 系列:
排错实战——解决c++编译错误:error C2059: illegal token on right side of '::'
善用 vs 中的错误列表和输出窗口,高效查找 C++ 多工程编译错误
欢迎留言交流!
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Java语言精粹
Jim Waldo / 王江平 / 电子工业出版社 / 2011-6 / 39.00元
这是一本几乎只讲java优点的书。 Jim Waldo先生是原sun微系统公司实验室的杰出工程师,他亲历并参与了java从技术萌生、发展到崛起的整个过程。在这《java语言精粹》里,jim总结了他所认为的java语言及其环境的诸多精良部分,包括:类型系统、异常处理、包机制、垃圾回收、java虚拟机、javadoc、集合、远程方法调用和并发机制。另外,他还从开发者的角度分析了在java技术周围......一起来看看 《Java语言精粹》 这本书的介绍吧!