内容简介:说明:本文很早就发布在我的博客上了,当时总结的有些问题,本次重新整理完善后再次发布。猜你喜欢:转储文件系列:
说明:本文很早就发布在我的博客上了,当时总结的有些问题,本次重新整理完善后再次发布。
前言
有时候我们非常想知道当前系统内核的一些状态,比如查看当前系统加载了哪些驱动,查看某个进程外 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++ 多工程编译错误
欢迎留言交流!
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Beginning Google Maps API 3
Gabriel Svennerberg / Apress / 2010-07-27 / $39.99
This book is about the next generation of the Google Maps API. It will provide the reader with the skills and knowledge necessary to incorporate Google Maps v3 on web pages in both desktop and mobile ......一起来看看 《Beginning Google Maps API 3》 这本书的介绍吧!