windbg

阅读 / 问答 / 标签

如何用windbg通过usb3.0调试内核目标

windbg USB不是一根线就可以的,中间有个链接设备的。设备两边是USB接口,双机调试,而且USB调试必须是WIN7才行呢。

windbg busy怎么解决

一、DMP文件获取设置 (1)在运行窗口中输入 drwtsn32 -i ,并且点击确定 (2)在(1)确定后弹出如下对话框(3)在(2)弹出的确定框后点击确定按钮完成,将Dr.Watson设置为默认应用程序调试程序。 Dr.Watson系统自带的程序。 (4)再次在运行窗口中输入:drwtsn32,如下图:(5)点击确定按钮,在弹出的对话框中按照下列方式设置(6) 点击确定按钮完成DMP文件设置。二、关闭Dr.Watson方法(1)打开注册表(2)在注册表中进入主键[HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsNTCurrentVersionAeDebug],然后将“AUTO”键值设置为0如下图:

飞行堡垒7偶尔蓝屏,用windbg解析,小白看不懂,求指点

建议把蓝屏文件上传到火绒论坛 然后发帖求助火绒官方客服帮你分析你电脑蓝屏原因

windows应用程序是不是没有pdb符号文件就不能用windbg来调试?

建议: 5.名次的排定:选中I3单元格,输入公式:=RANK(H3,$H$3:$H$47),按下Enter键后,丁1同学总分的名次即排定,并填入I3单元格中。用填充柄就可以将I3单元格中的公式复制到I4—I47单元格中,用于排定其他学生的名次。对公式中引用的参数做适当的修改,还可以排出每位同学各个学科成绩的名次。

vs添加过windbg的gflags调试,怎么取消

1. 必须在命令行中设置为要分析的进程打开用户堆栈信息:C:Program FilesDebugging Tools for Windows (x64)>gflags.exe -iYourDebugProcess.exe +ust2. 必须是Debug版本的进程3. 设置好windbg的pdb路径,即symbol path4. 利用windbg的AttachT

请问windbg检测蓝屏代码srv.sys (srv+1104d)是什么意思

一旦出现蓝屏,版主就该立即记录下蓝屏代码,这样就可以依据代码对号入座,这样问题就很容易解决了。请版主“对症下药”Windows蓝屏错误代码 0X0000 操作完成 0X0001 不正确的函数 0X0002 系统找不到指定的文件 0X0003 系统找不到指定的路径 0X0004 系统无法打开文件 0X0005 拒绝存取 0X0006 无效的代码 0X0007 内存控制模块已损坏 0X0008 内存空间不足,无法处理这个指令 0X0009 内存控制模块位址无效 0X000A 环境不正确 0X000B 尝试载入一个格式错误的程序 0X000C 存取码错误 0X000D 资料错误 0X000E 内存空间不够,无法完成这项操作 0X000F 系统找不到指定的硬盘 0X0010 无法移除目录 0X0011 系统无法将文件移到其他的硬盘 0X0012 没有任何文件 0X0019 找不到指定扇区或磁道 0X001A 指定的磁盘或磁片无法存取 0X001B 磁盘找不到要求的装置 0X001C 打印机没有纸 0X001D 系统无法将资料写入指定的磁盘 0X001E 系统无法读取指定的装置 0X001F 连接到系统的某个装置没有作用 0X0021 文件的一部分被锁定,现在无法存取 0X0024 开启的分享文件数量太多 0X0026 到达文件结尾 0X0027 磁盘已满 0X0036 网络繁忙 0X003B 网络发生意外的错误 0X0043 网络名称找不到 0X0050 文件已经存在 0X0052 无法建立目录或文件 0X0053 INT24失败(什么意思?还请高手指点站长一二) 0X006B 因为代用的磁盘尚未插入,所以程序已经停止 0X006C 磁盘正在使用中或被锁定 0X006F 文件名太长 0X0070 硬盘空间不足 0X007F 找不到指定的程序 0X045B 系统正在关机 0X045C 无法中止系统关机,因为没有关机的动作在进行中 0X046A 可用服务器储存空间不足 0X0475 系统BIOS无法变更系统电源状态 0X047E 指定的程序需要新的windows版本 0X047F 指定的程序不是windows或ms-dos程序 0X0480 指定的程序已经启动,无法再启动一次 0X0481 指定的程序是为旧版的 windows所写的 0X0482 执行此应用程序所需的程序库文件之一被损 0X0483 没有应用程序与此项操作的指定文件建立关联 0X0484 传送指令到应用程序无效 0X05A2 指定的装置名称无效 0X05AA 系统资源不足,无法完成所要求的服务 0X05AB 系统资源不足,无法完成所要求的服务 0X05AC 系统资源不足,无法完成所要求的服务 0X06B9 资源不足,无法完成操作更多代码请至 http://user.qzone.qq.com/253841019/blog/1220070073查询...

windows蓝屏,windbg分析结果如下,求解

电脑蓝屏的因素有太多了,只看代码也没办法准确判定的可以使用电脑管家,打开工具箱,有个电脑诊所,在里面直接找电脑蓝屏,然后就可以找到对应的解决办法了

电脑蓝屏,windbg分析结果看不懂,求高手给解读。

你好,很高兴为您解答。给您分享一些解决蓝屏小妙招,楼主仔细看一下哦。  1.经常检查电脑配件接触情况。在板卡接触不良的情况下运行会引起系统死机,因此在更换电脑配件时,一定要使板卡与主机板充分接触。  2.在卸载软件时,用自带的反安装程序或Windows里面的安装/卸载方式,不要直接删除程序文件夹,因为某些文件可能被其他程序共享,一旦删除这些共享文件,会造成应用软件无法使用而死机。  3.定期清洁机箱。灰尘太多会使板卡之间接触不良,引起系统在运行中死机,因此机箱要随时清洁,不要让太多的灰尘积存在机箱中。  4.保证正确的Bios设置。Bios里面的设置一定要合适,错误的Bios设置会使你在运行Windows的时候死机。  5.坚持认真查杀病毒。对来历不明的光盘或软盘,不要轻易使用,对邮件中的附件,要先用杀毒软件检查后再打开。  6.按正确的操作顺序关机。在应用软件未正常结束运行前,别关闭电源,否则会造成系统文件损坏或丢失,引起在启动或运行中死机。  7.避免多任务同时进行。在执行磁盘整理或用杀毒软件检查硬盘期间,不要运行其他软件,否则会造成死机。  8.勿过分求新。各种硬件的驱动不一定要随时更新,因为才开发的驱动程序往往里面有bug,会对系统造成损害,引起系统死机,最新的不一定是最好的。  9.设置硬件设备时,最好检查有无保留中断(IRQ),不要让其他设备使用该中断号,以免引起中断冲突,造成系统死机。  10.CPU、显卡等配件一般不要超频,若确实需要超,要注意超频后板卡的温度,CPU、显卡等长期在非正常频率和温度下工作轻则自动重启或死机,重者烧毁CPU、显卡、主板。  11.如果你的机器内存不是很大,千万不要运行占用内存较大的程序,如Photoshop,否则运行时容易死机。  12.对于系统文件或重要的文件,最好使用隐含属性,这样才不至于因错误操作删除这些文件,引起系统死机。  13.在上网冲浪的时候,不要打开太多的浏览器窗口,否则会导致系统资源不足,引起系统死机。  14.修改硬盘主引导记录时,最好先保存原来的记录,防止因修改失败而无法恢复原来的引导记录。希望我的回答对你有帮助,祝您生活愉快。

32位Win7旗舰版 系统蓝屏,WinDbg分析代码看不懂,求高人!!!

拔插内存条~擦亮金手指!

双机调试时,如何让windbg忽略DbgPrint异常

windbg有个debug下拉菜单,这个菜单里面有个Event filters选项,对这里面的进行设置就能过掉相应的调试事件了。

WIN7频繁蓝屏。代码000d1 用windbg 检测如下。

我这英文水平差,给你大概翻译下这意思:1:Use !analyze -v to get detailed debugging information. (使用!分析 -v 来得到详细的调试信息)2:BugCheck D1, {fffffa800c116001, 2, 0, fffffa800a7d54cf} (Bug检查 D1, {fffffa800c116001, 2, 0, fffffa800a7d54cf})3:Probably caused by : Unknown_Image ( ANALYSIS_INCONCLUSIVE ) (可能由于: 来源不明图像(分析_无法得到结果))4:Followup: MachineOwner (大概是:“跟进机器”的意思吧)蓝屏故障的原因很多,常见的有四,一,系统中毒或者系统文件损坏,杀毒不彻底啊,这类情况有某个别病毒是很难杀掉的,不行就重装系统吧;二,内存氧化接触不好或者不兼容或者是内存损坏,清理下内存或插槽者换内存(最好使用酒精);三,显卡BGA封装芯片虚焊或者主板其他BGA(南北桥等)封装芯片虚焊导致的这种情况一般很少发生;四,内存cpu过热,散热性不好!(开机时间不要太长,关机散热);五:显卡或内存cpu,或风扇的接触不良和松动或有灰尘覆盖也会导致蓝屏啊;还有很多什么软件,硬件冲突不兼容就不说了,你先看看以上说的这些问题,基本都是这些问题,都是比较简单容易处理的。如果处理中有什么问题可以继续追问。

电脑蓝屏 用windbg分析了 但不懂什么意思 求解答

跟网上的蓝屏代码对应看看

电脑长期蓝屏,WinDbg查出来是ntoskrnl.exe引起,求高手分析原因

重装系统

为什么Win7 64 用WinDbg 老是不能本地内核调试

1、病毒是最大的元凶。可先调出任务管理器,查看CPU占用率,如果某个进程CPU占用率居高不下,就很可能是被病毒感染了,立刻结束该进程吧,然后用杀毒软件对系统进行一次全盘扫描,让病毒无所遁形。2、然后要看看是不是网络防火墙对浏览器的进程进行了拦截。从控制面板中进入“Windows防火墙”,在左侧点击“允许程序或功能通过Windows防火墙”,然后点击右侧的“允许运行另一程序”,在列表中找到你使用的浏览器(或点击浏览手动添加),点击下面的“添加”,退出之后再次运行浏览器看看能不能正常访问,如果还是不行,请看下一步。3、这时我们要检查问题是不是出在DNS的设置上面。DNS(Domain Name System)的作用就是将网站域名,转换成一个可以进行访问的IP地址。进入到控制面板,点击“查看网络状态和任务”,然后打开“本地连接”状态,点击“属性”,在新窗口中双击“Internet协议”。在弹出的窗口里面查看“使用下面的DNS服务器地址”信息,一般家用电脑是自动获取的DNS地址,如果需要填写,确保和当地网络服务商提供的DNS地址一致4.如果以上无效,可以尝试重置lsp。(金山毒霸百宝箱有这个功能)

winDBG分析结果,请达人指导下

PTION_CODE: (NTSTATUS) 0xc0

windbg的breakpoint 0 hit和 3hit的区别

1 .logopen logfile.log该命令的作用是创建一个windbg的日志文件,从该文件创建开始直到.logclose调用,所有debug的过程都会log到logfile.log文件中。这对于调试过程的回忆和追踪是有用处的。2 bp module!functionname(或者内存地址)该命令的作用是创建在指定的地方插入一个断点。当程序运行到断点时,会产生中断等待用户处理(这个过程叫做中断命中breakpoint hit)。程序中可以加入多个中断。当我们在动态调试程序的时候,该命令较为常用,但是对于静态的dump文件不需要。3 bl该命令的作用是列出所有断电信息。0:000> bp mydebug!CallFast0:000> bl 0 e 00401430 0001 (0001) 0:**** mydebug!CallFast4 ln 某个地址(该地址可以是register的值,module!function等只要是能够表示内存地址的均可)该命令的作用是列出与该指定地址附近的函数(list nearest function)ln 00401430D:studymydebugmydebug.cpp(48)(00401430) mydebug!CallFast | (004014f0) mydebug!MyFunction5 dd 内存地址 (可选参数Lx表示显示的长度,缺省长度为8)该命令的作用以每4个字节为一个单元快,显示从指定内存地址开始的内容。缺省情况下会显示连续32块内存地址,即32*4个字节内的内容。当然,显示太多没有意义的内存内容只会干扰我们,因此我们也可使指定所要显示的单元块的个数,如dd esp L4 表示显示从esp指定地址开始的4个单元块,即连续16个字节的内容dd esp0012fe04 0012feb8 00000000 7ffdd000 cccccccc0012fe14 cccccccc cccccccc cccccccc cccccccc0012fe24 cccccccc cccccccc cccccccc cccccccc0012fe34 cccccccc cccccccc cccccccc cccccccc0012fe44 cccccccc cccccccc cccccccc 000000000012fe54 00000000 00000004 004310d8 0012feb80012fe64 00401402 00000006 0012ff18 000000000012fe74 7ffdd000 cccccccc cccccccc cccccccc0:000> dd esp L40012fe04 0012feb8 00000000 7ffdd000 cccccccc这个命令较为常用常用6 db 内存地址 (Lx 缺省长度为8)该命令的作用和dd非常相似,不过db显示的内存单元块大小为一个Byte,并且和dd显示的方向正好相反(高-低)。该命令相比dd,其好处是它会在右边显示出其相应的ASCII码,这在查看某个内存中的字符串时尤为有用。db 0043112400431124 52 65 73 75 6c 74 20 6f-66 20 74 68 65 20 64 69 Result of the di00431134 76 69 73 69 6f 6e 20 6f-66 20 25 64 20 62 79 20 vision of %d by00431144 25 64 20 69 73 20 3a 25-64 00 00 00 00 00 00 00 %d is :%d.......00431154 00 00 00 00 69 33 38 36-5c 63 68 6b 65 73 70 2e ....i386chkesp.00431164 63 00 00 00 00 00 00 00-54 68 65 20 76 61 6c 75 c.......The valu00431174 65 20 6f 66 20 45 53 50-20 77 61 73 20 6e 6f 74 e of ESP was not00431184 20 70 72 6f 70 65 72 6c-79 20 73 61 76 65 64 20 properly saved00431194 61 63 72 6f 73 73 20 61-20 66 75 6e 63 74 69 6f across a functio该命令显示了从内存00431124处开始连续16*8的内容,最右边显示的是其对应的ASCII码的值。7 da 内存地址该命令是显示指定内存地址的字符串的值,而不会象dd,db那样显示连续8个单元块的内容,而是遇到结束符即结束,因此在查看指定内存中的字符串时尤为有用0:000> da 0043112400431124 "Result of the division of %d by "00431144 "%d is :%d"该命令只显示了00431124开始的字符串的值,然后自动终止。而用db的话效果如上所示。8 k, kb, kv,knk命令的作用是显示出所有call stack中的内容。kb外加显示用来传输参数的前3个双字节(double word)的地址。kv则在kb基础上外加显示其调用规则(calling convention)。kn:在kb的基础上最左边另外显示call stack frames的frame number,。从而可以通过.frame命令选择相应的call stack frame进行调试,例如dv可以查看当前call stack frame的传入参数值和函数体中临时变量的值。如下所示:0:000> k *** Stack trace for last set context - .thread/.cxr resets itChildEBP RetAddr 0012fe60 00401402 mydebug!CallFast+0x60 [D:studymydebugmydebug.cpp @ 58]0012feb8 00401393 mydebug!CallwithStd+0x42 [D:studymydebugmydebug.cpp @ 44]0012ff18 0040130a mydebug!CallWithCDecl+0x43 [D:studymydebugmydebug.cpp @ 37]0012ff80 00401969 mydebug!main+0x9a [D:studymydebugmydebug.cpp @ 28]0012ffc0 77e6f23b mydebug!mainCRTStartup+0xe9 [crt0.c @ 206]0012fff0 00000000 kernel32!BaseProcessStart+0x230:000> kb *** Stack trace for last set context - .thread/.cxr resets itChildEBP RetAddr Args to Child 0012fe60 00401402 00000006 0012ff18 00000000 mydebug!CallFast+0x60 [D:studymydebugmydebug.cpp @ 58]0012feb8 00401393 004310d8 00000004 00000006 mydebug!CallwithStd+0x42 [D:studymydebugmydebug.cpp @ 44]0012ff18 0040130a 0043101c 00000004 00000006 mydebug!CallWithCDecl+0x43 [D:studymydebugmydebug.cpp @ 37]0012ff80 00401969 00000001 00440e90 00440dc0 mydebug!main+0x9a [D:studymydebugmydebug.cpp @ 28]0012ffc0 77e6f23b 00000000 00000000 7ffdd000 mydebug!mainCRTStartup+0xe9 [crt0.c @ 206]0012fff0 00000000 00401880 00000000 78746341 kernel32!BaseProcessStart+0x230:000> kv *** Stack trace for last set context - .thread/.cxr resets itChildEBP RetAddr Args to Child 0012fe60 00401402 00000006 0012ff18 00000000 mydebug!CallFast+0x60 [D:studymydebugmydebug.cpp @ 58]0012feb8 00401393 004310d8 00000004 00000006 mydebug!CallwithStd+0x42 [D:studymydebugmydebug.cpp @ 44]0012ff18 0040130a 0043101c 00000004 00000006 mydebug!CallWithCDecl+0x43 [D:studymydebugmydebug.cpp @ 37]0012ff80 00401969 00000001 00440e90 00440dc0 mydebug!main+0x9a [D:studymydebugmydebug.cpp @ 28]0012ffc0 77e6f23b 00000000 00000000 7ffdd000 mydebug!mainCRTStartup+0xe9 [crt0.c @ 206]0012fff0 00000000 00401880 00000000 78746341 kernel32!BaseProcessStart+0x23 (FPO: [Non-Fpo]) kn # ChildEBP RetAddr 00 0012fe60 00401402 mydebug!CallFast+0x60 [D:studymydebugmydebug.cpp @ 58]01 0012feb8 00401393 mydebug!CallwithStd+0x42 [D:studymydebugmydebug.cpp @ 44]02 0012ff18 0040130a mydebug!CallWithCDecl+0x43 [D:studymydebugmydebug.cpp @ 37]03 0012ff80 00401969 mydebug!main+0x9a [D:studymydebugmydebug.cpp @ 28]04 0012ffc0 77e6f23b mydebug!mainCRTStartup+0xe9 [crt0.c @ 206]05 0012fff0 00000000 kernel32!BaseProcessStart+0x23//左边显示的即为call stack frame number运行.frame frameno ,如.frame 0 即可选择相应

电脑有时用着就会蓝屏,然后用了windbg分析,大神求解答。

驱动不合适。或者补漏洞补的。

windbg image path是干什么

.

windbg可以调试c#delphi吗

string dir = basename(fullPath); if(!_fileUtils->isDirectoryExist(dir)) { if(!_fileUtils->createDirectory(dir)) { // Failed to create directory CCLOG("AssetsManagerEx : can not create directory %s ", fullPath.c_str()); unzClose(zipfile); return false; }

用winDbg调试内核有什么用呢?

windbg能调试运行在特权级代码(内核,windows驱动程序在特权级运行)

蓝屏了用Windbg打开*.dmp后得如下信息.请高手解释一下问题出在哪

电脑出现蓝屏,一般都是由系统、软件、内存等原因引起的。原因由下:1.电脑不心装上了恶意软件,或上网时产生了恶意程序,建议用腾讯电脑管家杀毒软件,清理垃圾,查杀恶意软件,完成后重启电脑,就可能解决。2.点击开始菜单---运行----输入cmd 回车,在命令提示符下输入for %1 in (%windir%system32*.dll) do regsvr32.exe /s %1 然后 回车。然后让他运行完,应该就可能解决。3.电脑机箱里面内存条进灰尘,拆开机箱,拆下内存条,用橡皮擦内存条金手指,换个插槽重新装回去,就可以了。4.开机不停按F8,进入高级,选择最后一次正确配置,确定。5.使用腾讯电脑管家,工具箱--硬件检测--查看配置,根据配置更新驱动!!电脑诊所--搜索系统蓝屏--查看修复办法。

WIN7频繁蓝屏。代码000d1 用windbg 检测如下。

我这英文水平差,给你大概翻译下这意思:1:Use !analyze -v to get detailed debugging information. (使用!分析 -v 来得到详细的调试信息)2:BugCheck D1, {fffffa800c116001, 2, 0, fffffa800a7d54cf} (Bug检查 D1, {fffffa800c116001, 2, 0, fffffa800a7d54cf})3:Probably caused by : Unknown_Image ( ANALYSIS_INCONCLUSIVE ) (可能由于: 来源不明图像(分析_无法得到结果))4:Followup: MachineOwner (大概是:“跟进机器”的意思吧)蓝屏故障的原因很多,常见的有四,一,系统中毒或者系统文件损坏,杀毒不彻底啊,这类情况有某个别病毒是很难杀掉的,不行就重装系统吧;二,内存氧化接触不好或者不兼容或者是内存损坏,清理下内存或插槽者换内存(最好使用酒精);三,显卡BGA封装芯片虚焊或者主板其他BGA(南北桥等)封装芯片虚焊导致的这种情况一般很少发生;四,内存cpu过热,散热性不好!(开机时间不要太长,关机散热);五:显卡或内存cpu,或风扇的接触不良和松动或有灰尘覆盖也会导致蓝屏啊;还有很多什么软件,硬件冲突不兼容就不说了,你先看看以上说的这些问题,基本都是这些问题,都是比较简单容易处理的。如果处理中有什么问题可以继续追问。

如何用windbg调试因需加载的DLL

点击文件就可,如果不能运行1、打开电脑管家找到工具箱;2、打开工具箱找到“电脑诊所”3、打开电脑诊所后在右上角的搜索内输入dlL找到需要修复的文件后点击一键修复或者可以点击详情查看原因并点击立即修复。

win10 笔记本电脑蓝屏原因,求助,附有windbg分析

1)您的电脑蓝屏的时候,您在电脑干什么呢,能说说吗?我会跟据您说的较为准确的回答您。蓝屏代码或事件查看器里面的内容普通人是看不懂的,请将你在蓝屏前电脑的表现,和你操作说的详细些(我跟据你提供的信息重新回答你)。一般蓝屏是自己不正确操作引起的,记住容易引起蓝屏的操作不做。电脑不要满负荷操作,就是在玩游戏、看视频时、下载时、看网页的同时在干别的操作最容易死机、蓝屏,因此在玩游戏、看视频、下载时、看网页时不要在操作别的东西了。不管您在干什么,只要一有卡的迹象时就赶紧停止手头的操作退出在试,这样就不会蓝屏,如果还是这样就不要玩了或是不要看了。硬件方面:如果内存小请加内存条,硬盘是否有坏道,硬件是否不兼容或是故障,在用鲁大师测试一下CPU等硬件的温度是否高。2)如果您说的是开机蓝屏是与您关机前的不当操作有关系吧?比如:玩游戏、看视频、操作大的东西、使用电脑时间长造成的卡引起的吧?或下载了不合适的东西、或删除了系统文件、或断电关机等,故障不会无缘无故的发生吧?反复开关机试试,放一段时间试试,确实不可以就重装系统吧,如果自己重装不了,到维修那里找维修的人帮助您。只要注意自己的电脑不卡机、蓝屏、突然关机,开机就不会这样了。3)有问题请您追问我。如果一看代码或系统日志或蓝屏DMP文件分析工具就可以准确知道问题在哪里谁都可以成为专家了,但是既使到微软网站搜索出来的答案也是让人摸不到头脑,我的实践是,解决电脑问题靠技术与实践,没有捷径的道路可走。

windbg怎样挂起exe程序

在dev里生成dll和调用程序的pdb符号文件,然后把符号文件拷贝到windbg的符号文件目录里 设置好源文件的路径,然后用windbg运行调用程序 然后就可以设断点,跟踪了 具体看windbg的帮助文件,网上也有很多例子

电脑开CF时蓝屏,用Windbg检测出崩溃文件是这个

求下图画师ID

电脑最近总是蓝屏 利用windbg.exe导入bmp文件之后显示如下:

n去修一下

如何用WinDbg分析MEMORY.DMP文件

在C++实际开发过程中,开发出来的程序,一般情况下由开发人员进行单元测试,然后移交给测试人员进行测试。在开发人员测试出现的bug,我们可以直接在本地进行调试。如果测试人员测试出崩溃级别的bug,如果我们需要调试往往借助于vs提供的Remote Debugger工具进行远程调试(关于vs2010远程调试的方法,请参考http://blog.sina.com.cn/s/blog_a459dcf5010153o7.html),然是当程序在用户手中出现崩溃此时我们可以采用Remote Debugger进行调试,但是如果此时开发人员无法直接去用户现场调试,此时就需要用户生成DMP文件,以便开发人员使用DMP文件进行分析。本文主要介绍C++开发过程中出现程序崩溃后,如何进行分析定位bug(基于xp系统)。一、DMP文件获取设置(1)在运行窗口中输入 drwtsn32 -i ,并且点击确定WinDbg分析DMP文件方法完全攻略(2)在(1)确定后弹出如下对话框WinDbg分析DMP文件方法完全攻略(3)在(2)弹出的确定框后点击确定按钮完成,将Dr.Watson设置为默认应用程序调试程序。Dr.Watson系统自带的程序。(4)再次在运行窗口中输入:drwtsn32,如下图:WinDbg分析DMP文件方法完全攻略(5)点击确定按钮,在弹出的对话框中按照下列方式设置WinDbg分析DMP文件方法完全攻略(6) 点击确定按钮完成DMP文件设置。二、关闭Dr.Watson方法(1)打开注册表(2)在注册表中进入主键[HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsNTCurrentVersionAeDebug],然后将“AUTO”键值设置为0如下图:WinDbg分析DMP文件方法完全攻略三、Windbg下载地址http://msdn.microsoft.com/en-us/windows/hardware/gg463009.aspx,下载完成后安装四、DMP文件获取(1) 用vs2010创建一个基于win32的程序,其源码如下:WinDbg分析DMP文件方法完全攻略(2)我们知道在学习C++中整数不能跟0进行除运算,否则会引起程序崩溃。而(1)中就是编写能触发0的异常,导致程序结束运行的程序。编译(1)中的程序,结果如下:WinDbg分析DMP文件方法完全攻略(3)运行(2)中test.exe程序 ,程序崩溃。如下图:WinDbg分析DMP文件方法完全攻略(4) 按照《一、DMP文件获取设置》步骤实现Dr.Watson设置为默认应用程序调试程序。(5)再次运行运行(2)中test.exe程序 如下图:WinDbg分析DMP文件方法完全攻略点击确定完成dmp文件的生成。(6)打开在(4)中设置dmp文件路径。(本例中默认地址为:C:Documents and SettingsAll UsersApplication DataMicrosoftDr Watson)如下图:WinDbg分析DMP文件方法完全攻略其中user.dmp就是我们需要的dmp文件。五、分析《四、DMP文件获取》中获取的DMP文件

新装的WIN7旗舰版32位老是蓝屏,用windbg检测出下面的内容,但是不是很理解,有大哥大姐帮忙分析一下吗

你这个检测结果就是没有找到蓝屏的原因,那个WINDBG运行出现了问题。不知道你是不是用的独显,试试把显卡驱动卸载掉,再用的试试看。

win7下windbg开启local kernel debug失败

******************************************************************************** ** Bugcheck Analysis ** ********************************************************************************TARGET_MDL_TOO_SMALL (40)A driver has called the IoBuildPartialMdl() function and passed it an MDLto map part of a source MDL, but the target MDL is not large enough to mapthe entire range of addresses requested. This is a driver bug. The sourceand target MDLs, as well as the address range length to be mapped are thearguments to the IoBuildPartialMdl() function, i.e.;IoBuildPartialMdl(IN PMDL SourceMdl,IN OUT PMDL TargetMdl,IN PVOID VirtualAddress,IN ULONG Length)Arguments:Arg1: 86448230Arg2: 87c55f18Arg3: 864dce44Arg4: 00000000Debugging Details:------------------GetContextState failed, 0xD0000147Unable to read selector for PCR for processor 1DEFAULT_BUCKET_ID: VISTA_DRIVER_FAULTBUGCHECK_STR: 0x40CURRENT_IRQL: 2LAST_CONTROL_TRANSFER: from 00000000 to 00000000STACK_TEXT: 00000000 00000000 00000000 00000000 00000000 0x0STACK_COMMAND: kbSYMBOL_NAME: ANALYSIS_INCONCLUSIVEFOLLOWUP_NAME: MachineOwnerMODULE_NAME: Unknown_ModuleIMAGE_NAME: Unknown_ImageDEBUG_FLR_IMAGE_TIMESTAMP: 0BUCKET_ID: INVALID_KERNEL_CONTEXTFollowup: MachineOwner---------你就是大神了,可能问老神。

windbg怎么打开pdb文件

PDB文件是Palm OS操作系统上数据文件类型。一般我们在使用Palm系统的电子书时都会遇到这种文件,一般用于电子书或手机电子书 pdb是Palm DataBase的缩写,Palm OS所用文件的扩展名为.pdb。可以使用PalmReader打开。 如果想把PDB文件转换成TXT文件查看,可以使用WavePDB转。

WINDBG调试没有符号文件,怎么显示函数名

可以使用这样的命令:0:000> dds poi(00405798+2) l10051b710 7e42974e user32!GetCursorPos命令的原理是这样的。以下面这条指令为例:call WINCMD32+0x1a908 (0041a908)CALL指令调用的地址0041a908处通常是一条跳转指令:00405798 ff2510b75100 jmp dword ptr [WINCMD32+0x11b710 (0051b710)] ds:0023:0051b710={user32!GetCursorPos (7e42974e)}0040579e 8bc0 mov eax,eax这条跳转指令的目的其实就是跳转到IAT表中对应API表项所保存的API入口。注意上面的机器码ff2510b75100,前两个字节ff25是操作码,后四个字节10b75100是操作数,其实就是间接跳转时取最终目标的地方,转换成DWORD就是0051b710。使用!dh命令可以找到IAT表的位置:0:000> !dh 00400000... 11B000 [ 2A20] address [size] of Import Directory...也就是说IATA表的偏移是11B000,长度是2A20,上面的地址0051b710就是在这个范围内:0:000> ?? 0x0051b710-(0x400000+0x11B000) < 0x2a20bool true也可以直接dds这个表,来了解导入了哪些API......当然也可以对IAT表设断点,调用时停下来 :-)

我电脑蓝屏了,用WinDbg分析出来了,请大家看看是什么问题引起的?

Microsoft (R) Windows Debugger Version 6.8.0004.0 X86Copyright (c) Microsoft Corporation. All rights reserved.Loading Dump File [C:WindowsMEMORY.DMP]Kernel Summary Dump File: Only kernel address space is availableSymbol search path is: *** Invalid ***Dump文件信息:0x1A,错误程序:wof.sys。请尝试更新您的硬件驱动程序或者检查硬件兼容性,查看是否可以解决问题。

WinDbg怎么才能看见变量的值

我想通过这个dump文件来查找引起崩溃的代码,代码行是可以找到。我用的是WinDbg。但是把鼠标移到出错代码附近的变量,不能显示变量的值,WinDbg提示:Your debugger is not using the correct symbols, in order for this command to work properly, your symbol path must point to .pdb files that have full type infomation.我已经设置了Source Path和Symbol Path,要不然也不会跳到出错的行,难道我的.pdb没有“full type information ,我用的是VS2005, 调试的是C++(非托管)------解决方案--------------------------------------------------------總在用六零呢------解决方案--------------------------------------------------------首先要保证ntdll.dll的Symbol一定正确。比较新的Windbg都可以自动找到Microsoft Symbol路径。比如你有一个dump文件叫mycrash.dump, 以下操作大致:假定你的pdb的路径是 c:mydirmyprogram.pdb (每次Build之后一定要保留pdb文件,即使Release Build也要产生Pdb)windbg -z mycrash.dump进入后:!symfix <==== 让Windbg能找到微软的Pdb.sympath+ c:mydir <==== 让Windbg能找到你自己的Pdb.srcpath c:mydirmysourcecode <==== 你源程序的路径.reload -f之后就可以看到了。

如何用windbg分析memory.dmp文件

本文主要介绍C++开发过程中出现程序崩溃后,如何进行分析定位bug(基于xp系统)。一、DMP文件获取设置(1)在运行窗口中输入 drwtsn32 -i ,并且点击确定WinDbg分析DMP文件方法完全攻略(2)在(1)确定后弹出如下对话框WinDbg分析DMP文件方法完全攻略(3)在(2)弹出的确定框后点击确定按钮完成,将Dr.Watson设置为默认应用程序调试程序。Dr.Watson系统自带的程序。(4)再次在运行窗口中输入:drwtsn32,如下图:WinDbg分析DMP文件方法完全攻略(5)点击确定按钮,在弹出的对话框中按照下列方式设置WinDbg分析DMP文件方法完全攻略(6) 点击确定按钮完成DMP文件设置。二、关闭Dr.Watson方法(1)打开注册表(2)在注册表中进入主键[HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsNTCurrentVersionAeDebug],然后将“AUTO”键值设置为0如下图:WinDbg分析DMP文件方法完全攻略

如何用Windbg找到被catch住的C++的异常

博客搬到了fresky.github.io - Dawei XU,请各位看官挪步。最新的一篇是:如何用Windbg找到被catch住的C++的异常。如何用Windbg找到被catch住的C++的异常标签:

以下是windbg给出的蓝屏结论,烦请前辈一看。已经困扰我二个多月了,真心希望解决。先行感谢啦!

1)您的电脑蓝屏的时候,您在电脑干什么呢,能说说吗?我会跟据您说的较为准确的回答您。蓝屏代码或事件查看器里面的内容普通人是看不懂的,请将你在蓝屏前电脑的表现,和你操作说的详细些(我跟据你提供的信息重新回答你)。一般蓝屏是自己不正确操作引起的,记住容易引起蓝屏的操作不做。电脑不要满负荷操作,就是在玩游戏、看视频时、下载时、看网页的同时在干别的操作最容易死机、蓝屏,因此在玩游戏、看视频、下载时、看网页时不要在操作别的东西了。不管您在干什么,只要一有卡的迹象时就赶紧停止手头的操作退出在试,这样就不会蓝屏,如果还是这样就不要玩了或是不要看了。硬件方面:如果内存小请加内存条,硬盘是否有坏道,硬件是否不兼容或是故障,在用鲁大师测试一下CPU等硬件的温度是否高。2)如果您说的是开机蓝屏是与您关机前的不当操作有关系吧?比如:玩游戏、看视频、操作大的东西、使用电脑时间长造成的卡引起的吧?或下载了不合适的东西、或删除了系统文件、或断电关机等,故障不会无缘无故的发生吧?反复开关机试试,放一段时间试试,确实不可以就重装系统吧,如果自己重装不了,到维修那里找维修的人帮助您。只要注意自己的电脑不卡机、蓝屏、突然关机,开机就不会这样了。3)有问题请您追问我。蓝屏就是停止您操作的提示,其实蓝屏也是保护您电脑的措施,就和电脑到一定的高温是关机是一样的。90%的蓝屏是自己操作使用电脑不当引起的,卡是蓝屏发生的根源,容易引起卡的操作不做,就会避免蓝屏或少发生蓝屏。如果一看代码或系统日志或蓝屏DMP文件分析工具就可以准确知道问题在哪里谁都可以成为专家了,但是既使到微软网站搜索出来的答案也是让人摸不到头脑,我的实践是,解决电脑问题靠技术与实践,没有捷径的道路可走。

win7(32位 专业版)加载了一个有bug的PCIE驱动,导致蓝屏了,用windbg打开dmp文件后,结果什么都没有

更多知识尽在华夏联盟开机马上按F8不动到高级选项出现在松手,选“最近一次的正确配置”回车修复,还不行按F8进入安全模式还原一下系统或重装系统(如果重装也是蓝屏,建议还是检修一下去)。出现这样的问题是软件冲突、驱动不合适、系统问题引起的,可以在安全模式还原一下系统,还是不行重新安装操作系统,不要安装软件、补丁、驱动等,看看开机还有问题吗?如果没有在逐步的安装驱动、补丁、软件,找出不合适的东西就不要安装了。请将你在蓝屏前电脑的表现,和你操作说的详细些。下载什么软件、补丁,升级了什么硬件了吗?详细的说说蓝屏前你做了什么,可能就是这些操作引起的蓝屏的发生,有问题请追问我(我跟据你提供的信息重新回答你)。1、蓝屏前【下载了什么软件、补丁、插件、驱动】等全部卸载试试,如果是驱动不合适,请下载驱动精灵升级驱动。2、如果电脑有木马,请下载Win清理助手、金山卫士、360急救箱查杀木马。3、如果不经常出现蓝屏关机在开机就可以了,还是不行,请开机按F8不动到高级选项出现在松手,选“最近一次的正确配置”回车修复,在不行还原一下系统或重装系统。4、如果是硬件问题引起的,或超频了硬件将BIOS电池放电(恢复BIOS出厂默认值)建议插拔一下显卡、内存等硬件,清理一下电脑里的卫生,并且擦亮显卡、内存的金手指(在测试一下硬件的温度是否过高)。5、电脑在光驱读盘时被非正常打开可以导致蓝屏,一般将光盘重新放入光驱即可。电脑在带电插拔某设备时可以导致蓝屏,重启一下电脑修复或按上面第三项修复。6、还有就是硬盘是否有问题,用系统自带的功能修复一下或下载软件修复硬盘坏道,或格式化硬盘重新分区重装系统,还是不行就需要换硬盘了。7、最近升级了硬件,这些硬件与系统不兼容,比如:内存、显卡等,请更换硬件试试(到升级硬件的地方更换合适为止)。8、如果是硬件问题引起的,自己又找不出问题所在,建议到维修那里检修一下。9、玩游戏蓝屏,一般是游戏本身的问题,电脑的配置与游戏有冲突,显卡、显卡驱动不合适,CPU、显卡的温度过高,内存太小等引起的,另外就是在玩游戏、看视频时,同时在干别的操作最容易蓝屏,因此在玩游戏、看视频时不要在操作别的东西了(看视频蓝屏问题同上)。

vs添加过windbg的gflags调试,怎么取消

1. 必须在命令行中设置为要分析的进程打开用户堆栈信息:C:Program FilesDebugging Tools for Windows (x64)>gflags.exe -iYourDebugProcess.exe +ust2. 必须是Debug版本的进程3. 设置好windbg的pdb路径,即symbol path4. 利用windbg的AttachToProcess (貌似后面这个方案不行:在目标机器上产生转储文件(dump)然后用windbg分析)。5. 利用!heap命令示例:0:032> !heap -sNtGlobalFlag enables following debugging aids for new heaps:stack back tracesLFH Key : 0x00000052389f3a7eTermination on corruption : ENABLEDHeap Flags Reserv Commit Virt Free List UCR Virt Lock Fast(k) (k) (k) (k) length blocks cont. heap

windbg打开dmp文件报错?

报错:不支持此接口。

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

嘿嘿,接分

Windows10电脑蓝屏DMP文件windbg结果求分析

一、升级DX时把system下的部分重要文件覆盖安装。二、检查机箱内线路是否松动,硬盘接口等以及显卡 网卡 声卡 内存等是否插紧。三、电源问题。由于劣质电源电压不稳定,非常有可能引起一系列的问题,比如无故死机重起 故障等现象,电源问题引起故障主要是因为电压不稳定,开机时间过长在显卡等一系列设备中形成一些脉冲电阻,在关机的时候计算机就会发现错误,所以引起故障!四、木马造成故障,可用腾讯电脑管家彻底查杀。五、腾讯电脑管家-工具箱-系统急救箱,或一键还原或重做系统。

我在使用winDbg解析蓝屏dump文件的时候出现以下信息,请大神帮忙看下这是哪里的问题,谢谢。

更多知识尽在华夏联盟开机马上按F8不动到高级选项出现在松手,选“最近一次的正确配置”回车修复,还不行按F8进入安全模式还原一下系统或重装系统(如果重装也是蓝屏,建议还是检修一下去)。出现这样的问题是软件冲突、驱动不合适、系统问题引起的,可以在安全模式还原一下系统,还是不行重新安装操作系统,不要安装软件、补丁、驱动等,看看开机还有问题吗?如果没有在逐步的安装驱动、补丁、软件,找出不合适的东西就不要安装了。请将你在蓝屏前电脑的表现,和你操作说的详细些。下载什么软件、补丁,升级了什么硬件了吗?详细的说说蓝屏前你做了什么,可能就是这些操作引起的蓝屏的发生,有问题请追问我(我跟据你提供的信息重新回答你)。1、蓝屏前【下载了什么软件、补丁、插件、驱动】等全部卸载试试,如果是驱动不合适,请下载驱动精灵升级驱动。2、如果电脑有木马,请下载Win清理助手、金山卫士、360急救箱查杀木马。3、如果不经常出现蓝屏关机在开机就可以了,还是不行,请开机按F8不动到高级选项出现在松手,选“最近一次的正确配置”回车修复,在不行还原一下系统或重装系统。4、如果是硬件问题引起的,或超频了硬件将BIOS电池放电(恢复BIOS出厂默认值)建议插拔一下显卡、内存等硬件,清理一下电脑里的卫生,并且擦亮显卡、内存的金手指(在测试一下硬件的温度是否过高)。5、电脑在光驱读盘时被非正常打开可以导致蓝屏,一般将光盘重新放入光驱即可。电脑在带电插拔某设备时可以导致蓝屏,重启一下电脑修复或按上面第三项修复。6、还有就是硬盘是否有问题,用系统自带的功能修复一下或下载软件修复硬盘坏道,或格式化硬盘重新分区重装系统,还是不行就需要换硬盘了。7、最近升级了硬件,这些硬件与系统不兼容,比如:内存、显卡等,请更换硬件试试(到升级硬件的地方更换合适为止)。8、如果是硬件问题引起的,自己又找不出问题所在,建议到维修那里检修一下。9、玩游戏蓝屏,一般是游戏本身的问题,电脑的配置与游戏有冲突,显卡、显卡驱动不合适,CPU、显卡的温度过高,内存太小等引起的,另外就是在玩游戏、看视频时,同时在干别的操作最容易蓝屏,因此在玩游戏、看视频时不要在操作别的东西了(看视频蓝屏问题同上)。

如何使用WinDBG跟踪调试ASL/ACPI

其实并不是只有在生成不了转储文件的情形下才能使用双机调试,在任何情况下都是可以使用的,尤其是调试内核问题时,双机调试不必限于转储文件类型,均可获得一切可以获得的信息,相当于完全内存转储了。而且,双机调试可以调试到系统启动阶段和

如何用WinDbg分析MEMORY.DMP文件

在C++实际开发过程中,开发出来的程序,一般情况下由开发人员进行单元测试,然后移交给测试人员进行测试。在开发人员测试出现的bug,我们可以直接在本地进行调试。如果测试人员测试出崩溃级别的bug,如果我们需要调试往往借助于vs提供的Remote Debugger工具进行远程调试,然是当程序在用户手中出现崩溃此时我们可以采用Remote Debugger进行调试,但是如果此时开发人员无法直接去用户现场调试,此时就需要用户生成DMP文件,以便开发人员使用DMP文件进行分析。本文主要介绍C++开发过程中出现程序崩溃后,如何进行分析定位bug(基于xp系统)。一、DMP文件获取设置(1)在运行窗口中输入 drwtsn32 -i ,并且点击确定WinDbg分析DMP文件方法完全攻略(2)在(1)确定后弹出如下对话框WinDbg分析DMP文件方法完全攻略(3)在(2)弹出的确定框后点击确定按钮完成,将Dr.Watson设置为默认应用程序调试程序。Dr.Watson系统自带的程序。(4)再次在运行窗口中输入:drwtsn32,如下图:WinDbg分析DMP文件方法完全攻略(5)点击确定按钮,在弹出的对话框中按照下列方式设置WinDbg分析DMP文件方法完全攻略(6) 点击确定按钮完成DMP文件设置。二、关闭Dr.Watson方法(1)打开注册表(2)在注册表中进入主键[HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsNTCurrentVersionAeDebug],然后将“AUTO”键值设置为0如下图:WinDbg分析DMP文件方法完全攻略三、Windbg下载,下载完成后安装四、DMP文件获取(1) 用vs2010创建一个基于win32的程序,其源码如下:WinDbg分析DMP文件方法完全攻略(2)我们知道在学习C++中整数不能跟0进行除运算,否则会引起程序崩溃。而(1)中就是编写能触发0的异常,导致程序结束运行的程序。编译(1)中的程序,结果如下:WinDbg分析DMP文件方法完全攻略(3)运行(2)中test.exe程序 ,程序崩溃。如下图:WinDbg分析DMP文件方法完全攻略(4) 按照《一、DMP文件获取设置》步骤实现Dr.Watson设置为默认应用程序调试程序。(5)再次运行运行(2)中test.exe程序 如下图:WinDbg分析DMP文件方法完全攻略点击确定完成dmp文件的生成。(6)打开在(4)中设置dmp文件路径。(本例中默认地址为:C:Documents and SettingsAll UsersApplication DataMicrosoftDr Watson)如下图:WinDbg分析DMP文件方法完全攻略其中user.dmp就是我们需要的dmp文件。五、分析《四、DMP文件获取》中获取的DMP文件。

如何使用WinDBG跟踪调试ASL/ACPI

在现代计算机中,硬件和固件(BIOS)都必须符合ACPI规范,以便操作系统可以控制所有模块的自动配置和电源管理。 使用WinDbg调试ACPI代码通常需要两台计算机,一台是目标机(Debuggee),另一台作为主机(Debugger)。下面就介绍一下怎么在两台机器上建立调试环境。1、配置调试Debuggee的连接方式Windbg支持COM、1394、USB2.0三种不同的连接方式,看到网上有些文章关于使用USB2.0来连接,需要购买特殊的USB调试线,而且价格不菲,本篇文章就不讨论了。笔记本电脑一般都没有COM端口,只好使用1394或是COM转USB,但在这里我只想讨论怎么使用COM端口来连接。启动到操作系统,使用bootcfg命令或直接使用文本编辑器修改boot.ini文件,指定调试使用的端口及参数。为了使用COM端口来调试,需要在启动参数中加入/debug参数,并指定/debugport和/baudrate子参数来作为启动项。下面这个boot.ini文件的第一个启动项就是配置使用COM端口。/debugport子参数指出使用Debuggee的哪个COM口,/baudrate指出连接的速度(默认是每秒19200位)。[boot loader]timeout=30default=multi(0)disk(0)rdisk(0)partition(1)/WINDOWS[operating systems]multi(0)disk(0)rdisk(0)partition(1)/WINDOWS="Debugging with Cable" /fastdetect /debug /debugport=COM1 /baudrate=57600multi(0)disk(0)rdisk(0)partition(1)/WINDOWS="Microsoft Windows XP Professional" /fastdetect下面的例子使用bootcfg命令设置第一个启动项使用COM1端口、波特率为115200。bootcfg的/debug开关打开,/port开关及/baud参数指出端口和速度,/ID开关指出修改的是第一个启动项。bootcfg /debug ON /port COM1 /baud 115200 /ID 1

windbg报异常 如何解决?

有两个方法,可以尝试一下:1)可以尝试添加路径,不要加入文件名;2)利用VC工具包中的editbin工具可以为程序文件增加校验;希望采纳

如何用windbg分析memory.dmp文件

在C++实际开发过程中,开发出来的程序,一般情况下由开发人员进行单元测试,然后移交给测试人员进行测试。在开发人员测试出现的bug,我们可以直接在本地进行调试。如果测试人员测试出崩溃级别的bug,如果我们需要调试往往借助于vs提供的Remote Debugger工具进行远程调试,然是当程序在用户手中出现崩溃此时我们可以采用Remote Debugger进行调试,但是如果此时开发人员无法直接去用户现场调试,此时就需要用户生成DMP文件,以便开发人员使用DMP文件进行分析。本文主要介绍C++开发过程中出现程序崩溃后,如何进行分析定位bug(基于xp系统)。一、DMP文件获取设置(1)在运行窗口中输入 drwtsn32 -i ,并且点击确定WinDbg分析DMP文件方法完全攻略(2)在(1)确定后弹出如下对话框WinDbg分析DMP文件方法完全攻略(3)在(2)弹出的确定框后点击确定按钮完成,将Dr.Watson设置为默认应用程序调试程序。Dr.Watson系统自带的程序。(4)再次在运行窗口中输入:drwtsn32,如下图:WinDbg分析DMP文件方法完全攻略(5)点击确定按钮,在弹出的对话框中按照下列方式设置WinDbg分析DMP文件方法完全攻略(6) 点击确定按钮完成DMP文件设置。二、关闭Dr.Watson方法(1)打开注册表(2)在注册表中进入主键[HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsNTCurrentVersionAeDebug],然后将“AUTO”键值设置为0如下图:WinDbg分析DMP文件方法完全攻略三、Windbg下载地址,下载完成后安装四、DMP文件获取(1) 用vs2010创建一个基于win32的程序,其源码如下:WinDbg分析DMP文件方法完全攻略(2)我们知道在学习C++中整数不能跟0进行除运算,否则会引起程序崩溃。而(1)中就是编写能触发0的异常,导致程序结束运行的程序。编译(1)中的程序,结果如下:WinDbg分析DMP文件方法完全攻略(3)运行(2)中test.exe程序 ,程序崩溃。如下图:WinDbg分析DMP文件方法完全攻略(4) 按照《一、DMP文件获取设置》步骤实现Dr.Watson设置为默认应用程序调试程序。(5)再次运行运行(2)中test.exe程序 如下图:WinDbg分析DMP文件方法完全攻略点击确定完成dmp文件的生成。(6)打开在(4)中设置dmp文件路径。(本例中默认地址为:C:Documents and SettingsAll UsersApplication DataMicrosoftDr Watson)如下图:WinDbg分析DMP文件方法完全攻略其中user.dmp就是我们需要的dmp文件。五、分析《四、DMP文件获取》中获取的DMP文件。

windbg使用方法

windbg使用方法是: 1、如果还没有安装过Windbg,首先要下载安装它。打开百度首页,搜索Windbg,点击高速下载,然后安装。 2、安装成功后,可以点击开始菜单,程序中找到并启动Windbg。 3、启动后主界面。 4、可以选择文件(File)菜单附加到一个进程。 5、在打开的列表中选择要调试的进程。 6、有的进程可能权限比较高,无法调试。 7、使用管理员身份运行Windbg。 8、再选择进程,附加进程。

windbg 查看内核函数 求助

首先你要配置好测试环境:参考VMware+Windgb+Win7 内核驱动调试在你的主机上配置Symbols配置sympath,C:UsersAdminDesktopfirstobjchk_win7_x86i386是你编译好的sys目录: SRV*C:Symbols*http://msdl.microsoft.com/download/symbols;C:UsersAdminDesktopfirstobjchk_win7_x86i386配置Source search path假设文件放在C:UsersAdminDesktopfirst]: C:UsersAdminDesktopfirst然后在命令行中输入:.reload打开源文件:Ctrl+O接着检查是否已经加载sys.dbg,命令为:kd> !lmi ndislwfLoaded Module Info: [nt]Module: ntoskrnl Base Address: 80a02000Symbol Type: PDB – Symbols loaded successfully from symbol server.d:DebugSymbols dislwf.pdbEC9B7590D1BB47A6A6D5383538C2B31A1 toskrnl.pdbCompiler: C – front end [13.10 bld 2179] – back end [13.10 bld 2190] Load Report: public symbolsd:DebugSymbols dislwf.pdbEC9B7590D1BB47A6A6D5383538C2B31A1 dislwf.pdb接着如果出现如上的结果,表明可以手动设置断点,否则(个人经验总是不能设置)。假设在ndislwf 的DriverEntry 设置断点。在启动驱动之前,中断在WinDbg的命令窗口,输入:bu ndislwf!DriverEntry接下来开始安装测试驱动。若执行到DriverEntry该函数,就会停下来,并且会在代码框中对应的代码中用红色标志,然后按F10可以单步调试。如果查看已经设置哪些断点:kd> bl0 e [d:winddk3790srcgeneralioctlsysfilter.c @ 123] 0001 (0001) ndislwf!DriverEntry1 e [d:winddk3790srcgeneralioctlsysfilter.c @ 338] 0001 (0001) ndislwf!SioctlDeviceControl+0×103注意两件事: 每个断点都有一个号码并且显示出断点状态,“e”是“enabled”,而“d”是“disabled”。假设你希望临时停止使用某个断点。bd (“Disable Breakpoint”) 将会完成它。你只需指定断点号码:kd> bd 1kd> bl0 e [d:winddk3790srcgeneralioctlsysfilter.c @ 123] 0001 (0001) ndislwf!DriverEntry1 d [d:winddk3790srcgeneralioctlsysfilter.c @ 338] 0001 (0001) ndislwf!SioctlDeviceControl+0×103 ·相似的方法,永久移除断点号码,使用bc 1 (“Clear Breakpoint”)。现在该断点将会从断点列表中消除。假设你希望临时停止使用某 个断点。bd (“Disable Breakpoint”) 将会完成它。你只需指定断点号码:kd> bd 1kd> bl0 e [d:winddk3790srcgeneralioctlsyssioctl.c @ 123] 0001 (0001) SIoctl!DriverEntry1 d [d:winddk3790srcgeneralioctlsyssioctl.c @ 338] 0001 (0001) SIoctl!SioctlDeviceControl+0×103· 相似的方法,永久移除断 点号码,使用bc 1 (“Clear Breakpoint”)。现在该断点将会从断点列表中消除。就先写这么写。怕到时候测试又忘记了。

电脑蓝屏用windbg查了一下,给这个代码;求懂行的解释下,具体文件信息在补充

你好你说的这种情况,一般都是由 系统软件、内存、硬盘引起的。1 电脑不心装上了恶意软件,或上网时产生了恶意程序,建议用360 卫士 、金山卫士等软件,清理垃圾,查杀恶意软件,完成后重启电脑,就可能解决。实在不行,重装,还原过系统,可以解决软件引起的问题。2 如果不能进入系统,可以开机后 到系统选择那里 按f8 选 起作用的最后一次正确配置(可以解决因驱动装错造成的错误)和带网络连接安全模式(进去后是有网络的,再用360软件弄下),可能就可以修复。 3 点 开始菜单 运行 输入 cmd 回车,在命令提示符下输入 for %1 in (%windir%system32*.dll) do regsvr32.exe /s %1 然后 回车。然后让他运行完,应该就可能解决。4 最近电脑中毒、安装了不稳定的软件、等,建议全盘杀毒,卸了那个引发问题的软件,重新安装其他 版本,就可能解决. 再不行,重新装过系统就ok.5 电脑机箱里面内存条进灰尘,拆开机箱,拆下内存条,清洁下内存金手指,重新装回去,就可能可以了。(cqjiangyong总结的,旧电脑经常出现这样的问题)6 电脑用久了内存坏、买到水货内存、多条内存一起用不兼容等,建议更换内存即可能解决。7 很多时候由于系统和显卡驱动的兼容性不好,也会出现这样的错误,建议你换个其他版本的显卡驱动安装,或换个其他版本的系统安装。8 电脑用久了,硬盘坏,重新分区安装系统可以修复逻辑坏道,还是不行,那就到了该换硬盘的时候了,换个硬盘就可以解决。硬件方面的问题,如果你不专业,建议拿到电脑店去测试,测试好了讲好价再换。希望能帮到你!!! 请踩最佳吧。.追问我的是笔记本 过年的时候才买的,联想Y470我也用过一键还原,但是还是出现蓝屏。驱动我也更新过,在联想官网下的。每次蓝屏的代码貌似都不同。 回答一键还原 ,后还蓝屏的话,是很大可能硬件问题哟.建议你找下售后以.

我电脑蓝屏了,用WinDbg分析出来了,请大家看看是什么问题引起的

从您的数据看,此问题是由Unknown_Image引起的,就是Probably caused by后面的那几个英文字母,可能是系统进程产生错误,但windows错误处理器无法捕获,其产生的原因很多,包括:硬件兼容性、有问题的启动程序或系统服务、或者是某些软件。 解决方案:请使用"事件查看器"获取更多的信息,从中发现错误根源。 第一步:检查碰盘空间如果在Windows安装过程中第一次出现此问题,可能是没有足够的硬盘空间来运行Windows。 第二步:BlOS不兼容。如果在windows安装过程中第一次重启后或在安装完成后出现此问题,可能是BlOS与Windows不兼容,请级到最新Bios。 第三步:存在不兼容的硬件驱动程序。如果STOP错误信息中列出了某驱动程序的名称,请禁用或删除该驱动程序。如果在启动过程中发生错误,则需要进入安全模式重命名或删除有问提的驱动程序。如果无法进入安全模式.则需要用安装光盘进入故障恢复控制台,然后对该文件进行重命名

win10蓝屏 windbg分析看不懂结果

电脑蓝屏的因素有太多了,只看代码也没办法准确判定的可以使用电脑管家,打开工具箱,有个电脑诊所,在里面直接找电脑蓝屏,然后就可以找到对应的解决办法了

Windbg设置了sympath,为什么还提示找不到symbol

1、不要用自定义的下载目录,一定要用C:Symbols这个目录名字,然后.reload重新加载符号目录。 2、再次重启windbg就可以了。 3、注意,32位程序最好用32位windbg调试,64位用64位windbg调试。

老蓝屏怎么回事,这是windbg显示的

安装了不稳定的软件使电脑中毒等都会引起蓝屏,建议使用腾讯电脑管家来全盘杀毒,打开腾讯电脑管家--杀毒--全盘扫描--完成。应用腾讯自研第二代具有“自学习能力”的反病毒引擎“鹰眼”、具有占用资源少、轻巧、智能、精准的特性。

以下是windbg给出的蓝屏结论,烦请前辈一看。已经困扰我二个多月了,真心希望解决。先行感谢啦!

更新显卡驱动,或者用老版驱动

如何过滤windbg的打印信息

在logcat里点选绿色的+,然后在“by Application Name:”里填入com.my.app就OK了。 它还有“by Log Tag”、“by Log Message”、“by PID”过滤条件。

电脑蓝屏 用windbg检测结果如图 看不懂这是什么意思 请高手指教

别看前面前面都是述说 后面是 ,蓝屏代码 比较重要0000000000 开始的代表的是蓝屏代码.sys 代表的是最后引起蓝屏的原因 系统文件错误,楼主这个蓝屏很好解决的,做个系统就可以解决,如正版系统,请用一键恢复

分析一下windbg 蓝屏代码

1、硬盘不稳定引起,此故障均为硬盘损坏,修复硬盘坏道或直接更换硬盘可解决。2、键鼠故障,重新插拔一下USB或多以USB导电窜线引起。3、机箱内灰尘多引起,清除灰尘(一般3-5个月清除一次)。卸下CPU风扇,轻轻擦去U上的硅脂,再重新涂上一薄层新硅脂。4、超频也可能引起蓝屏,如果超频了,就取消超频。5、电脑中病毒或木马也会蓝屏。可以用腾讯电脑管家进行查杀。

windbg结果求帮助分析

首先,我们使用windbg打开dump文件。这时候如果直接输入!analyze -v ,得到的堆栈结果肯定是看不到想看的结果的。 其次,加载wow64exts模块,因为需要这个模块帮助把64位的dump,转换成32位的dump。输入 .load wow64exts 再次,进行转换。输入!sw 最后,按照分析32位dump文件的方法,分析这个dump。

为什么win10不能安装windbg

WIN10是才出来的系统,许多软件都不兼容,希望能帮到你!

如何利用 WinDbg 进行双机调试

  其实并不是只有在生成不了转储文件的情形下才能使用双机调试,在任何情况下都是可以使用的,尤其是调试内核问题时,双机调试不必限于转储文件类型,均可获得一切可以获得的信息,相当于完全内存转储了。而且,双机调试可以调试到系统启动阶段和之后任意时刻的问题,这是内存转储做不到的。因此只要满足连接条件,将两台机器相连,我们就可以进行双机调试了。下面我们通过表格比较一下可用的三种连接方式:    连接类型  说明    COM  使用零调制解调器(Null-Modem)线缆,也就是两个头都是母孔的RS232线,通过COM端口连接    1394  利用IEEE 1394线缆连接,要求调试机和被调机运行相同版本的至少为Windows XP的系统    USB 2.0  使用一种内置硬件芯片来支持调试的特制 USB 线缆连接,要求被调机运行的系统至少为Windows Vista      在双机调试中,我们一般选择对硬件和软件复杂度要求最低的 COM 对接方式进行连接。当然,目前很多的笔记本计算机并没有再保留 COM 端口,那就要采取别的方式进行双机调试了。这样,笔记本用户进行双机调试就显得复杂了许多,所以在能生成内存转储文件的情况下还是尽量分析内存转储比较好。另外,在双机调试之前,除了连接好线缆,我们还必须在被调机上做一些设置才能让我们进行调试。下面我们一起看看需要做哪些设置。    其实要做的设置也不难,就是开启系统的调试功能。鉴于现在 Windows XP Service Pack 3 的支持周期还没有结束,我将讲解 XP 和 Windows 7 两个系统下的典型配置方式。(在这里,我们统一设置连接口为 COM1 口,波特率为115200)    对于 Windows XP,由于启动使用的是 boot.ini 数据,因此我们可以手动修改 C:oot.ini 文件(假设您的系统装在 C 盘),在像 multi(0)disk(0)rdisk(0)partition(1)WINDOWS="Microsoft Windows XP Professional" /fastdetect 这样的启动项目后增加参数 /debug /debugport=com1 /baudrate=115200。当然,编辑 boot.ini 之前,您需要显示所有隐藏文件并且取消隐藏受保护的系统文件,而且还需清除该文件的只读属性。配置好的结果如下图所示(该记事本启用了自动换行,蓝色高亮部分其实在同一行):  除了直接编辑 boot.ini,还可以使用 msconfig 实用程序。启动 msconfig,切换到 BOOT.INI 选项卡,点击 高级 按钮,在弹出的对话框中进行如下配置后两次单击 确定 来退出 msconfig 即可:  或者,还有一种推荐的命令行方式来设置:    在 cmd 下键入并执行命令:bootcfg /debug ON /port COM1 /baud 115200 /ID 1  成功后会有如下提示:    这里的 /ID 开关用于决定对 boot.ini 中的哪一条启动项进行设置。可用的启动项可通过执行不带参数的 bootcfg 命令查看。更多自定义调试参数的方式请执行 bootcfg /debug /? 查询。    说到自定义调试参数,那我也得说说默认的调试参数:(默认调试参数即借助 /debug ON 参数单纯启用调试而没有配置调试口、波特率时的系统默认调试参数)  说完了 Windows XP 的配置,我们再来说说现行主流系统 Windows 7 的调试配置:    Windows Vista 和 Windows 7 下,就没有那么多的方法了。如果采用 Windows 自带的工具,就只能使用 bcdedit 命令了。Vista 之后,启动摒弃了 boot.ini 的方式,而是读取启动配置数据库。为了简化操作,我们可以使用默认调试配置,因此我们只需开启调试即可:    在以管理员身份运行的 cmd 下键入并执行命令:(每行一条命令)  bcdedit /bootdebug ON  bcdedit /debug ON    执行后得到的正确结果如下图所示:  您还可以通过执行 bcdedit /dbgsettings 命令来查看当前的调试参数设置。如果您要自定义调试参数,请执行命令 bcdedit /dbgsettings /? 获取帮助。    好了,做好了被调机的设置,我们还需做调试机的设置,这样才能进行调试。    由于条件所限,我只能使用我的笔记本计算机作为调试机,将安装在本机上的 Windows 7 家庭普通版虚拟机作为被调机,使用 NirSoft 的 StartBlueScreen 程序造成系统崩溃。  接着上面的步骤,此时我们刚刚配置完被调机 Windows 7 家庭普通版,并且尚未重启。我们接着应该运行调试机上面安装的 WinDbg,为了稍后能正确解析堆栈中的函数,我们首先应该点击 File – Symbol File Path…,填入 SRV*DownstreamStore*http://msdl.microsoft.com/download/symbols 后单击 OK(如果是平时调试您自己的程序,或者存有本地 Symbol,这里也可填写本地符号文件路径),然后选择 File – Kernel Debug…,在弹出的 Kernel Debugging 配置对话框中,我们选择 COM 选项卡,在 Baud Rate 里面填写 115200(与被调机调试参数匹配),然后单击 确定 即可。本来接下来就是连接零调制解调器线缆,随后重启被调机即可连上进行调试了,可是我们这里是虚拟演示,没有真实的零调制解调器线缆,我们再重启被调机之前、在确定 Kernel Debugging 配置对话框之前,我们还得做一些设置:(在此列举出来是为了方便有兴趣做一下本实验的人们 J)  u2022勾选 Pipe 使用命名管道连接  u2022勾选 Reconnect 确保在读/写错误发生时,WinDbg 自动断开并重连管道  u2022在 Port 字段填入命名管道名称(本例中笔者使用 \.pipeeric,具体用法在本文最后解释)  u2022激活被调机虚拟机窗口(以 Windows Virtual PC 为例),点击 工具 – 设置…, 在左栏选择 COM1(与被调机系统中设置的调试口一致),在右栏选择 命名管道 并在该字段填入与 WinDbg 里面一致的管道名称(本例是 \.pipeeric),然后 确定。  设置好了命名管道之后,我们在 WinDbg 的 Kernel Debugging 配置对话框中单击 确定。在询问是否 Save WorkSpace 的对话框中,我们选择 Yes。然后,WinDbg 就等待连接命名管道了。好了,后面的步骤就跟使用零调制解调器线缆连接的真实案例一样了。    接下来重启被调机。等待被调机重启并进入系统引导阶段后,WinDbg 会连上被调机并在 Waiting to reconnect… 状态下出现新的显示:  连上后,我们可以在任意阶段,于 WinDbg 内使用 Ctrl+Break 快捷键来中断被调机系统的运行,并配合相应命令进行即时分析。例如,就在这个启动阶段,我们使用 Ctrl+Break 快捷键来中断启动过程,我们可以看见启动过程的 UI 动画也随即停止:  如果要被调机继续运行,键入 g 并运行或者按下 F5 键即可。下面,我们就等待登录系统。登录系统后,我们使用提升权限的 cmd 运行 NirSoft 的系统崩溃软件来模拟一个平时我们见过的 0xc5 蓝屏,命令是 StartBlueScreen 0xc5 0 0 0 0。被调机蓝屏后,我们其实看不见以往的蓝屏,但是可以在 WinDbg 中立即看见捕获的信息,就跟分析内存转储文件一样,我们可以开始以往的分析工作了:  使用 !anaylze -v 命令,我们就可以定位出,造成蓝屏的驱动是 NirSoftBlueScreenDriver.sys。这个分析比较简单。但是值得注意的是,这个 bugcheck (即 0x000000C5)并不是系统像往常一样根据错误类型自动给出的,而是驱动 NirSoftBlueScreenDriver.sys 直接向 KeBugCheckEx 函数传递的参数,这个参数是笔者在利用 StartBlueScreen 程序时传递给程序的自定义参数,因此借助 StartBlueScreen 我们可以自定义蓝屏的五个参数。

如何在WinDBG中切换当前的线程

命令很简单:~0s 切换到0号线程~3s 切换到3号线程一些其他命令:~*e !clrstack 遍历每个线程, 依次输出它们的托管调用栈.!threads 查看所有的托管线程

蓝屏了~这是windbg得出的,求解决啊~谢谢~

你的电脑蓝屏前,你在电脑干什么呢,能说说吗?一般蓝屏代码或事件查看器里面的内容普通人是看不懂的,请将你在蓝屏前电脑的表现,和你操作说的详细些。下载什么软件、补丁,升级了什么硬件了吗?详细的说说蓝屏前你做了什么,可能就是这些操作引起的蓝屏的发生,有问题请追问我(我跟据你提供的信息重新回答你)。1、蓝屏前下载了什么软件、补丁、插件、驱动等全部卸载试试,如果是驱动不合适,请下载驱动精灵升级驱动。2、如果电脑有木马,请下载Win清理助手、金山卫士、360急救箱查杀木马。3、如果不经常出现蓝屏关机在开机就可以了,还是不行,请开机按F8不动到高级选项出现在松手,选“最近一次的正确配置”回车修复,在不行还原一下系统或重装系统。4、如果是硬件问题引起的,或超频了硬件将BIOS电池放电(恢复BIOS出厂默认值)建议插拔一下显卡、内存等硬件,清理一下电脑里的卫生,并且擦亮显卡、内存的金手指(在测试一下硬件的温度是否过高)。一般蓝屏是自己不正确操作引起的,记住容易引起蓝屏的操作不做。电脑不要满负荷操作,就是在玩游戏、看视频时、下载时、看网页的同时在干别的操作最容易死机、蓝屏,因此在玩游戏、看视频、下载时、看网页时不要在操作别的东西了(看看是不是这个问题引起的)。如果是开机蓝屏数数0-100检测硬盘请说一下。

这是用WinDbg打开的蓝屏文件,哪位电脑大神帮忙分析一下蓝屏原因

系统文件导致,先杀毒,清理磁盘

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

首先,我们使用windbg打开dump文件。这时候如果直接输入!analyze -v ,得到的堆栈结果肯定是看不到想看的结果的。其次,加载wow64exts模块,因为需要这个模块帮助把64位的dump,转换成32位的dump。输入 .load wow64exts再次,进行转换。输入!sw最后,按照分析32位dump文件的方法,分析这个dump。

电脑蓝屏求解决,用windbg分析了求指教

1)您的电脑蓝屏的时候,您在电脑干什么呢,能说说吗?我会跟据您说的较为准确的回答您。蓝屏代码或事件查看器里面的内容普通人是看不懂的,请将你在蓝屏前电脑的表现,和你操作说的详细些(我跟据你提供的信息重新回答你)。一般蓝屏是自己不正确操作引起的,记住容易引起蓝屏的操作不做。电脑不要满负荷操作,就是在玩游戏、看视频时、下载时、看网页的同时在干别的操作最容易死机、蓝屏,因此在玩游戏、看视频、下载时、看网页时不要在操作别的东西了。不管您在干什么,只要一有卡的迹象时就赶紧停止手头的操作退出在试,这样就不会蓝屏,如果还是这样就不要玩了或是不要看了。硬件方面:如果内存小请加内存条,硬盘是否有坏道,硬件是否不兼容或是故障,在用鲁大师测试一下CPU等硬件的温度是否高。2)如果您说的是开机蓝屏是与您关机前的不当操作有关系吧?比如:玩游戏、看视频、操作大的东西、使用电脑时间长造成的卡引起的吧?或下载了不合适的东西、或删除了系统文件、或断电关机等,故障不会无缘无故的发生吧?反复开关机试试,放一段时间试试,确实不可以就重装系统吧,如果自己重装不了,到维修那里找维修的人帮助您。只要注意自己的电脑不卡机、蓝屏、突然关机,开机就不会这样了。3)有问题请您追问我。如果一看代码或系统日志或蓝屏DMP文件分析工具就可以准确知道问题在哪里谁都可以成为专家了,但是既使到微软网站搜索出来的答案也是让人摸不到头脑,我的实践是,解决电脑问题靠技术与实践,没有捷径的道路可走。

调试逆向 windbg的本地符号怎么设置

  运行WinDbg->菜单->File->Symbol File Path  SRV*C:MyLocalSymbols*http://msdl.microsoft.com/download/symbols  (按照这样设置,WinDbg将先从本地文件夹C:MyCodesSymbols中查找Symbo...  我是这样写的  E:SPsymbolsSdll;SRV*D:Program Filessymbols*http://msdl.microsoft.com/download/symbols  E:SPsymbolsSdll里面有600多M的pdb了 但是他总是下载pdb到D:Program Filessymbols

用windbg检测蓝屏,检测出来显示这个,是什么原因呢?

上面的信息没有什么用。蓝屏简单判断法:一、如果蓝屏后重启,进安全模式也会蓝屏,或者蓝屏代码不固定,总是在变化,基本都是存在硬件故障造成的。1.内存条接触不良。拔出内存条,用橡皮擦仔细擦拭金手指,并对卡槽清理灰尘,再插上内存条。2.检查硬盘是否有坏道。用磁盘坏道检测工具对硬盘进行全面的检测和修复。3.检查散热情况。打开后盖或机箱,看看各个风扇是否正常?彻底清理主板和风扇的灰尘,风扇的轴承要上一点机油来润滑。安装“鲁大师”,对各个硬件进行密切地监控。4. .检查显卡。如果电脑的显卡是可以拔插的,用橡皮擦仔细擦拭金手指,再插上显卡。5. 检查电源,看看电源是否正常。二、其他不属于上面情况的蓝屏,大都是系统或软件原因造成的。需检查驱动是否正常?是否存在软件冲突或兼容性问题?电脑有无病毒木马?系统有无致命错误或系统文件丢失损坏?如果是系统的问题,进入“安全模式”,启用“系统还原”功能,还原系统到上一次正常开机的时间段。如果你的系统没有开启“系统还原”功能,则将你最近安装的驱动、程序、补丁全部缷载掉。如果还不行,则应该是系统有问题。建议重装原版(完全安装版)系统。

如何使用windbg在驱动加载时下断

首先说说应用层的调试吧.当我们在调试windows可执行程序的时候,通过将PE文件头中的ImageBase和AddressOfEntryPoint相加,从而得出第一条指令的地址.针对这个地址下断之后目标程序就中断在了了入口处.但是这个方法在驱动调试的时候却有心无力.这是因为可执行程序都是首先被加载到各自的私有地址空间,他们不会有地址冲突.然而驱动程序运行在内核里面,所有的驱动程序共享一个地址空间.所以需要重新设定基地址.1.利用bu命令下延迟断点.之前提到过,bu可以针对符号下断点.这里是用bu下延迟断点的意义在于即使目标驱动没有被加载,windbg也允许我们针对符号设置断点.当新加载驱动程序后,windbg就会检查驱动程序中是否包含了设置了延迟断点的函数.如果找到了,就把断点替换为地址形式,然后再设置断点.笔者的测试驱动程序为TestDriver.sys.[plain] view plaincopyprint?0: kd> .sympath Symbol search path is: E:Symbolwindbg Symbols;E:CodeVc_codeRing3Ring0Driverobjchk_wxp_x86i386 Expanded Symbol search path is: e:symbolwindbg symbols;e:codevc_code ing3ring0driverobjchk_wxp_x86i386 0: kd> .srcpath Source search path is: E:CodeVc_codeRing3Ring0Driver 在VMware客户机里,安装驱动后,敲下 net start TestDevice之后,系统理所应当的被断下来了.[plain] view plaincopyprint?Breakpoint 0 hit TestDriver!DriverEntry: f8c4ee10 8bff mov edi,edi 假如我们调试的驱动并不是以DriverEntry作为入口函数,bu针对符号下断也就没有了意义.但是我们可以使用模块加偏移的方式下断.假设TestDriver的入口函数的偏移为0xFB4.直接bu TestDriver+0xFB4即可.2.在系统调用DriverEntry之前下断.现在来看看我们的程序,中断在了DriverEntry之中.我们能不能在进入DriverEntry之前下断.首先我们dv和esp看一下当前的栈[plain] view plaincopyprint?1: kd> dv pDriverObject = 0x81f346e8 pRegistryPath = 0x81865000 "REGISTRYMACHINESYSTEMControlSet001ServicesTestDevice" status = 0n8 1: kd> r esp esp=f8af9c88 1: kd> dd f8af9c88 L8 f8af9c88 80582377 81f346e8 81865000 00000000 f8af9c98 b2926cf4 00000000 00000018 00000000 dv命令只显示了参数,还是用esp靠谱一点,至少给出了我们返回地址0x80582377.接下来该ln命令登场了[plain] view plaincopyprint?1: kd> ln 80582377 (80581d0a) nt!IopLoadDriver+0x66d | (80582442) nt!IopLoadUnloadDriver 返回地址位于nt!IopLoadDriver+0x66d处,直接反汇编一下吧,看看再哪里调用了DriverEntry[plain] view plaincopyprint?0: kd> bu TestDriver!DriverEntry 0: kd> bl 0 eu 0001 (0001) (TestDriver!DriverEntry) <pre name="code" class="plain">1: kd> u nt!IopLoadDriver+0x660 nt!IopLoadDriver+0x660: 8058236a 8b7d80 mov edi,dword ptr [ebp-80h] 8058236d ffb570ffffff push dword ptr [ebp-90h] 80582373 57 push edi 80582374 ff572c call dword ptr [edi+2Ch] 80582377 3bc3 cmp eax,ebx 80582379 8b8d68ffffff mov ecx,dword ptr [ebp-98h] 8058237f 8945ac mov dword ptr [ebp-54h],eax 80582382 8901 mov dword ptr [ecx],eax</pre><br> <pre></pre> <pre></pre> <pre></pre> <pre></pre> 0x80582377处是nt!IopLoadDriver+0x66d.前面的call指令占了3个字节.所以我们下断在nt!IopLoadDriver+0x66a就能在进入DriverEntry之前中断下来.3.使用事件异常先来看看系统中提供了哪些事件异常吧.直接sx下[plain] view plaincopyprint?1: kd> sx ct - Create thread - ignore et - Exit thread - ignore cpr - Create process - ignore epr - Exit process - ignore <strong>ld - Load module - output</strong> ud - Unload module - ignore ser - System error - ignore ibp - Initial breakpoint - break iml - Initial module load - ignore out - Debuggee output - output 这里我们要设置一下Load module事件为break, sxe -set enable sxd - set disable sxi -set ignore sxn -set output[plain] view plaincopyprint?1: kd> sxe ld 1: kd> sx ct - Create thread - ignore et - Exit thread - ignore cpr - Create process - ignore epr - Exit process - ignore ld - Load module - break ud - Unload module - ignore ser - System error - ignore ibp - Initial breakpoint - break iml - Initial module load - ignore out - Debuggee output - output 加载我们的驱动吧,在load module的时候系统中断然后我们找到模块基址,并在入口处下断即可.[plain] view plaincopyprint?1: kd> lm n start end module name [...] f8b9c000 f8b9d100 WMILIB WMILIB.SYS f8b9e000 f8b9f580 intelide intelide.sys f8ba0000 f8ba1700 dmload dmload.sys f8ba4000 f8ba5280 vmmouse vmmouse.sys f8bb0000 f8bb1100 swenum swenum.sys f8bb6000 f8bb7280 USBD USBD.SYS f8bba000 f8bbbf00 Fs_Rec Fs_Rec.SYS f8bbe000 f8bbf080 Beep Beep.SYS f8bc2000 f8bc3080 mnmdd mnmdd.SYS f8bc6000 f8bc7080 RDPCDD RDPCDD.sys f8bf8000 f8bf9a80 ParVdm ParVdm.SYS f8bfc000 f8bfde00 vmmemctl vmmemctl.sys <strong>f8c4e000 f8c4f300 TestDriver TestDriver.sys</strong> [...] 解析一下pe文件[plain] view plaincopyprint?1: kd> !dh -a f8c4e000 File Type: EXECUTABLE IMAGE FILE HEADER VALUES 14C machine (i386) 6 number of sections 5077C38E time date stamp Fri Oct 12 15:15:26 2012 0 file pointer to symbol table 0 number of symbols E0 size of optional header 102 characteristics Executable 32 bit word machine OPTIONAL HEADER VALUES 10B magic # 9.00 linker version C00 size of code 280 size of initialized data 0 size of uninitialized data <strong> FB4 address of entry point</strong> 480 base of code ----- new ----- [...] 然后bp TestDriver+0xFB4即可让系统中断在我们驱动程序的入口处.

windbg打不开 dmp文件?

dmp文件打开器(debugging tools for windows) 6.12.2.633微软官方版windows发生蓝屏时,如果系统属性有下图设置,windows会自动生成minidump文件,该文件记录蓝屏生成代码和导致蓝屏出现的进程,通过windebug的软件来分析这个minidump文件.我们就可以找到蓝屏出错的原因了。这个文件保存目录是C:windowsminidump文件夹,一般生成的名字为:Mini040108-01.dmp.系统重启时内存的dump,里边就是当时内存中的数据,要分析这个,得很要两把刷子,你不必费心去试了吧?!! 没有工具打得开DMP文件,必须用imp工具导入数据库或者windbg软件调试 微软在Windows中设计了一个功能,就是在蓝屏出现后,keBugCheck能够生成一个侦错文件一Memory.dmp(-般位于系统目录中,比如:C:WINNT), 它记录了发生篮屏时的详细情况,以便微软专家对错误进行分析。当然,一般用户即使打开它,也根本看不懂其中奥秘。微软建议在遇到蓝屏后,将Memory.dmp压缩并通过FTP、邮件或其他方式寄送给他们,但过程比较繁索,目前还没有人证明这样能尽快得到来自微软的解决方案。如果你对Memory.dmp的内容感兴趣,可运行windows2000安装光盘support ools文件夹中setup.exe来安装其支持工具,然后再C:Program FilesSupport Tools文件夹中找到DumPchk.exe,它是一个命令行工具,可以打开Momory.dmp并显示其中内容。 默认生成的Memory.dmp体积基本与你的系统内存相等,可以按下Win+Break组合键打开“系统属性”,进入“高级--启动和故障恢复”,在“写入调试信息”项选择是否生成Memory.dmp、“小内存转储”、“核心内存转储”或“完全内存转储”。建议选择“无”,因为Memory.dmp可能只对微软有用,并且我们一般也不会选择发给微软

windbg.exe安装后怎么用

方法/步骤1请自行百度搜索下载windbg软件建议去微软网站上下载运行windbg打开windbg程序按F6或者是 file——>Attach to a Proces然后就能看到本机所有的进程信息选择一个进程这里选择chrome浏览器的进程弹出提示框选择yes然后出现中断chrome浏览器不能使用在输入框里面输入G 然后按回车开始开始调试输出我们切换过去吧Chrome浏览器关闭掉然后windbg调试也退出接着我们只要保存数据即可

如何用WinDbg分析MEMORY.DMP文件

一、DMP文件获取设置(1)在运行窗口中输入 drwtsn32 -i ,并且点击确定WinDbg分析DMP文件方法完全攻略(2)在(1)确定后弹出如下对话框WinDbg分析DMP文件方法完全攻略(3)在(2)弹出的确定框后点击确定按钮完成,将Dr.Watson设置为默认应用程序调试程序。Dr.Watson系统自带的程序。(4)再次在运行窗口中输入:drwtsn32,如下图:WinDbg分析DMP文件方法完全攻略(5)点击确定按钮,在弹出的对话框中按照下列方式设置WinDbg分析DMP文件方法完全攻略(6) 点击确定按钮完成DMP文件设置。

如何使用windbg调试.exe

方法/步骤1请自行百度搜索下载windbg软件建议去微软网站上下载运行windbg打开windbg程序按F6或者是 file——>Attach to a Proces然后就能看到本机所有的进程信息选择一个进程这里选择chrome浏览器的进程弹出提示框选择yes然后出现中断chrome浏览器不能使用在输入框里面输入G 然后按回车开始开始调试输出我们切换过去吧Chrome浏览器关闭掉然后windbg调试也退出接着我们只要保存数据即可

如何使用WinDBG跟踪调试ASL/ACPI

在现代计算机中,硬件和固件(BIOS)都必须符合ACPI规范,以便操作系统可以控制所有模块的自动配置和电源管理。 使用WinDbg调试ACPI代码通常需要两台计算机,一台是目标机(Debuggee),另一台作为主机(Debugger)。下面就介绍一下怎么在两台机器上建立调试环境。1、配置调试Debuggee的连接方式Windbg支持COM、1394、USB2.0三种不同的连接方式,看到网上有些文章关于使用USB2.0来连接,需要购买特殊的USB调试线,而且价格不菲,本篇文章就不讨论了。笔记本电脑一般都没有COM端口,只好使用1394或是COM转USB,但在这里我只想讨论怎么使用COM端口来连接。启动到操作系统,使用bootcfg命令或直接使用文本编辑器修改boot.ini文件,指定调试使用的端口及参数。为了使用COM端口来调试,需要在启动参数中加入/debug参数,并指定/debugport和/baudrate子参数来作为启动项。下面这个boot.ini文件的第一个启动项就是配置使用COM端口。/debugport子参数指出使用Debuggee的哪个COM口,/baudrate指出连接的速度(默认是每秒19200位)。[boot loader]timeout=30default=multi(0)disk(0)rdisk(0)partition(1)/WINDOWS[operating systems]multi(0)disk(0)rdisk(0)partition(1)/WINDOWS="Debugging with Cable" /fastdetect /debug /debugport=COM1 /baudrate=57600multi(0)disk(0)rdisk(0)partition(1)/WINDOWS="Microsoft Windows XP Professional" /fastdetect下面的例子使用bootcfg命令设置第一个启动项使用COM1端口、波特率为115200。bootcfg的/debug开关打开,/port开关及/baud参数指出端口和速度,/ID开关指出修改的是第一个启动项。bootcfg /debug ON /port COM1 /baud 115200 /ID 1

如何用windbg分析memory.dmp文件

在C++实际开发过程中,开发出来的程序,一般情况下由开发人员进行单元测试,然后移交给测试人员进行测试。在开发人员测试出现的bug,我们可以直接在本地进行调试。如果测试人员测试出崩溃级别的bug,如果我们需要调试往往借助于vs提供的Remote Debugger工具进行远程调试(关于vs2010远程调试的方法,请参考http://blog.sina.com.cn/s/blog_a459dcf5010153o7.html),然是当程序在用户手中出现崩溃此时我们可以采用Remote Debugger进行调试,但是如果此时开发人员无法直接去用户现场调试,此时就需要用户生成DMP文件,以便开发人员使用DMP文件进行分析。本文主要介绍C++开发过程中出现程序崩溃后,如何进行分析定位bug(基于xp系统)。一、DMP文件获取设置(1)在运行窗口中输入 drwtsn32 -i ,并且点击确定WinDbg分析DMP文件方法完全攻略(2)在(1)确定后弹出如下对话框WinDbg分析DMP文件方法完全攻略(3)在(2)弹出的确定框后点击确定按钮完成,将Dr.Watson设置为默认应用程序调试程序。Dr.Watson系统自带的程序。(4)再次在运行窗口中输入:drwtsn32,如下图:WinDbg分析DMP文件方法完全攻略(5)点击确定按钮,在弹出的对话框中按照下列方式设置WinDbg分析DMP文件方法完全攻略(6) 点击确定按钮完成DMP文件设置。二、关闭Dr.Watson方法(1)打开注册表(2)在注册表中进入主键[HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsNTCurrentVersionAeDebug],然后将“AUTO”键值设置为0如下图:WinDbg分析DMP文件方法完全攻略三、Windbg下载地址http://msdn.microsoft.com/en-us/windows/hardware/gg463009.aspx,下载完成后安装四、DMP文件获取(1) 用vs2010创建一个基于win32的程序,其源码如下:WinDbg分析DMP文件方法完全攻略(2)我们知道在学习C++中整数不能跟0进行除运算,否则会引起程序崩溃。而(1)中就是编写能触发0的异常,导致程序结束运行的程序。编译(1)中的程序,结果如下:WinDbg分析DMP文件方法完全攻略(3)运行(2)中test.exe程序 ,程序崩溃。如下图:WinDbg分析DMP文件方法完全攻略(4) 按照《一、DMP文件获取设置》步骤实现Dr.Watson设置为默认应用程序调试程序。(5)再次运行运行(2)中test.exe程序 如下图:WinDbg分析DMP文件方法完全攻略点击确定完成dmp文件的生成。(6)打开在(4)中设置dmp文件路径。(本例中默认地址为:C:Documents and SettingsAll UsersApplication DataMicrosoftDr Watson)如下图:WinDbg分析DMP文件方法完全攻略其中user.dmp就是我们需要的dmp文件。五、分析《四、DMP文件获取》中获取的DMP文件

如何使用WinDbg调试进程信息

1. 必须命令行设置要析进程打用户堆栈信息:C:Program FilesDebugging Tools for Windows (x64)>gflags.exe -iYourDebugProcess.exe +ust2. 必须Debug版本进程3. 设置windbgpdb路径即symbol path4. 利用windbgAttachToProcess (貌似面案行:目标机器产转储文件(dump)用windbg析)5. 利用!heap命令示例:0:032> !heap -sNtGlobalFlag enables following debugging aids for new heaps:stack back tracesLFH Key : 0x00000052389f3a7eTermination on corruption : ENABLEDHeap Flags Reserv Commit Virt Free List UCR Virt Lock Fast(k) (k) (k) (k) length blocks cont. heap

Windows内核调试器的WinDBG

WinDBG和用户调试器一点很大不同是内核调试器在一台机器上启动,通过串口调试另一个相联系的以Debug方式启动的系统,这个系统可以是虚拟机上的系统,也可以是另一台机器上的系统(这只是微软推荐和实现的方法,其实象SoftICE这类内核调试器可以实现单机调试)。很多人认为主要功能都是在WinDBG里实现,事实上并不是那么一回事,windows已经把内核调试的机制集成进了内核,WinDBG、kd之类的内核调试器要做的仅仅是通过串行发送特定格式数据包来进行联系,比如中断系统、中断点、显示内存数据等等。然后把收到的数据包经过WinDBG处理显示出来。在进一步介绍WinDBG之前,先介绍两个函数:KdpTrace、KdpStub,我在《windows异常处理流程》一文里简单提过这两个函数。现在再提一下,当异常发生于内核态下,会调用KiDebugRoutine两次,异常发生于用户态下,会调用KiDebugRoutine一次,而且第一次调用都是刚开始处理异常的时候。当WinDBG未被加载时KiDebugRoutine为KdpStub,处理也很简单,主要是对由int 0x2d引起的异常如DbgPrint、DbgPrompt、加载卸载SYMBOLS(关于int 0x2d引起的异常将在后面详细介绍)等,把Context.Eip加1,跳过int 0x2d后面跟着的int 0x3指令。真正实现了WinDBG功能的函数是KdpTrap,它负责处理所有STATUS_BREAKPOINT和STATUS_SINGLE_STEP(单步)异常。STATUS_BREAKPOINT的异常包括int 0x3、DbgPrint、DbgPrompt、加载卸载SYMBOLS。DbgPrint的处理最简单,KdpTrap直接向调试器发含有字符串的包。DbgPrompt因为是要输出并接收字符串,所以先将含有字符串的包发送出去,再陷入循环等待接收来自调试器的含有回复字符串的包。SYMBOLS的加载和卸载通过调用KdpReportSymbolsStateChange,int 0x3断点异常和int 0x1单步异常(这两个异常基本上是内核调试器处理得最多的异常)通过调用KdpReportExceptionStateChange,这两个函数很相似,都是通过调用KdpSendWaitContinue函数。KdpSendWaitContinue可以说是内核调试器功能的大管家,负责各个功能的分派。这个函数向内核调试器发送要发送的信息,比如当前所有寄存器状态,每次单步后我们都可以发现寄存器的信息被更新,就是内核调试器接受它发出的包含最新机器状态的包;还有SYMBOLS的状态,这样加载和卸载了SYMBOLS我们都能在内核调试器里看到相应的反应。然后KdpSendWaitContinue等待从内核调试器发来的包含命令的包,决定下一步该干什么。让我们来看看KdpSendWaitContinue都能干些什么:case DbgKdReadVirtualMemoryApi:KdpReadVirtualMemory(&ManipulateState,&MessageData,ContextRecord);break;case DbgKdReadVirtualMemory64Api:KdpReadVirtualMemory64(&ManipulateState,&MessageData,ContextRecord);break;case DbgKdWriteVirtualMemoryApi:KdpWriteVirtualMemory(&ManipulateState,&MessageData,ContextRecord);break;case DbgKdWriteVirtualMemory64Api:KdpWriteVirtualMemory64(&ManipulateState,&MessageData,ContextRecord);break;case DbgKdReadPhysicalMemoryApi:KdpReadPhysicalMemory(&ManipulateState,&MessageData,ContextRecord);break;case DbgKdWritePhysicalMemoryApi:KdpWritePhysicalMemory(&ManipulateState,&MessageData,ContextRecord);break;case DbgKdGetContextApi:KdpGetContext(&ManipulateState,&MessageData,ContextRecord);break;case DbgKdSetContextApi:KdpSetContext(&ManipulateState,&MessageData,ContextRecord);break;case DbgKdWriteBreakPointApi:KdpWriteBreakpoint(&ManipulateState,&MessageData,ContextRecord);break;case DbgKdRestoreBreakPointApi:KdpRestoreBreakpoin(&ManipulateState,&MessageData,ContextRecord);break;case DbgKdReadControlSpaceApi:KdpReadControlSpace(&ManipulateState,&MessageData,ContextRecord);break;case DbgKdWriteControlSpaceApi:KdpWriteControlSpace(&ManipulateState,&MessageData,ContextRecord);break;case DbgKdReadIoSpaceApi:KdpReadIoSpace(&ManipulateState,&MessageData,ContextRecord);break;case DbgKdWriteIoSpaceApi:KdpWriteIoSpace(&ManipulateState,&MessageData,ContextRecord);break;case DbgKdContinueApi:if (NT_SUCCESS(ManipulateState.u.Continue.ContinueStatus) != FALSE) {return ContinueSuccess;} else {return ContinueError;}break;case DbgKdContinueApi2:if (NT_SUCCESS(ManipulateState.u.Continue2.ContinueStatus) != FALSE) {KdpGetStateChange(&ManipulateState,ContextRecord);return ContinueSuccess;} else {return ContinueError;}break;case DbgKdRebootApi:KdpReboot();break;case DbgKdReadMachineSpecificRegister:KdpReadMachineSpecificRegister(&ManipulateState,&MessageData,ContextRecord);break;case DbgKdWriteMachineSpecificRegister:KdpWriteMachineSpecificRegister(&ManipulateState,&MessageData,ContextRecord);break;case DbgKdSetSpecialCallApi:KdSetSpecialCall(&ManipulateState,ContextRecord);break;case DbgKdClearSpecialCallsApi:KdClearSpecialCalls();break;case DbgKdSetInternalBreakPointApi:KdSetInternalBreakpoint(&ManipulateState);break;case DbgKdGetInternalBreakPointApi:KdGetInternalBreakpoint(&ManipulateState);break;case DbgKdGetVersionApi:KdpGetVersion(&ManipulateState);break;case DbgKdCauseBugCheckApi:KdpCauseBugCheck(&ManipulateState);break;case DbgKdPageInApi:KdpNotSupported(&ManipulateState);break;case DbgKdWriteBreakPointExApi:Status = KdpWriteBreakPointEx(&ManipulateState,&MessageData,ContextRecord);if (Status) {ManipulateState.ApiNumber = DbgKdContinueApi;ManipulateState.u.Continue.ContinueStatus = Status;return ContinueError;}break;case DbgKdRestoreBreakPointExApi:KdpRestoreBreakPointEx(&ManipulateState,&MessageData,ContextRecord);break;case DbgKdSwitchProcessor:KdPortRestore ();ContinueStatus = KeSwitchFrozenProcessor(ManipulateState.Processor);KdPortSave ();return ContinueStatus;case DbgKdSearchMemoryApi:KdpSearchMemory(&ManipulateState,&MessageData,ContextRecord);break;读写内存、搜索内存、设置/恢复断点、继续执行、重启等等,WinDBG里的功能是不是都能实现了?呵呵。每次内核调试器接管系统是通过调用在KiDispatchException里调用KiDebugRoutine(KdpTrace),但我们知道要让系统执行到KiDispatchException必须是系统发生了异常。而内核调试器与被调试系统之间只是通过串口联系,串口只会发生中断,并不会让系统引发异常。那么是怎么让系统产生一个异常呢?答案就在KeUpdateSystemTime里,每当发生时钟中断后在HalpClockInterrupt做了一些底层处理后就会跳转到这个函数来更新系统时间(因为是跳转而不是调用,所以在WinDBG断下来后回溯堆栈是不会发现HalpClockInterrupt的地址的),是系统中调用最频繁的几个函数之一。在KeUpdateSystemTime里会判断KdDebuggerEnable是否为TRUE,若为TRUE则调用KdPollBreakIn判断是否有来自内核调试器的包含中断信息的包,若有则调用DbgBreakPointWithStatus,执行一个int 0x3指令,在异常处理流程进入了KdpTrace后将根据处理不同向内核调试器发包并无限循环等待内核调试的回应。现在能理解为什么在WinDBG里中断系统后堆栈回溯可以依次发现KeUpdateSystemTime->RtlpBreakWithStatusInstruction,系统停在了int 0x3指令上(其实int 0x3已经执行过了,只不过Eip被减了1而已),实际已经进入KiDispatchException->KdpTrap,将控制权交给了内核调试器。系统与调试器交互的方法除了int 0x3外,还有DbgPrint、DbgPrompt、加载和卸载symbols,它们共同通过调用DebugService获得服务。NTSTATUS DebugService(ULONG ServiceClass,PVOID Arg1,PVOID Arg2){NTSTATUS Status;__asm {mov eax,ServiceClassmov ecx,Arg1mov edx,Arg2int 0x2dint 0x3mov Status,eax}return Status;}ServiceClass可以是BEAKPOINT_PRINT(0x1)、BREAKPOINT_PROMPT(0x2)、BREAKPOINT_LOAD_SYMBOLS(0x3)、BREAKPOINT_UNLOAD_SYMBOLS(0x4)。为什么后面要跟个int 0x3,M$的说法是为了和int 0x3共享代码(我没弄明白啥意思-_-),因为int 0x2d的陷阱处理程序是做些处理后跳到int 0x3的陷阱处理程序中继续处理。但事实上对这个int 0x3指令并没有任何处理,仅仅是把Eip加1跳过它。所以这个int 0x3可以换成任何字节。int 0x2d和int 0x3生成的异常记录结(EXCEPTION_RECORD)ExceptionRecord.ExceptionCode都是STATUS_BREAKPOINT(0x80000003),不同是int 0x2d产生的异常的ExceptionRecord.NumberParameters>0且ExceptionRecord.ExceptionInformation对应相应的ServiceClass比如BREAKPOINT_PRINT等。事实上,在内核调试器被挂接后,处理DbgPrint等发送字符给内核调试器不再是通过int 0x2d陷阱服务,而是直接发包。用M$的话说,这样更安全,因为不用调用KdEnterDebugger和KdExitDebugger。最后说一下被调试系统和内核调试器之间的通信。被调试系统和内核调试器之间通过串口发数据包进行通信,Com1的IO端口地址为0x3f8,Com2的IO端口地址为0x2f8。在被调试系统准备要向内核调试器发包之前先会调用KdEnterDebugger暂停其它处理器的运行并获取Com端口自旋锁(当然,这都是对多处理器而言的),并设置端口标志为保存状态。发包结束后调用KdExitDebugger恢复。每个包就象网络上的数据包一样,包含包头和具体内容。包头的格式如下:typedef struct _KD_PACKET {ULONG PacketLeader;USHORT PacketType;USHORT ByteCount;ULONG PacketId;ULONG Checksum;} KD_PACKET,*PKD_PACKET;PacketLeader是四个相同字节的标识符标识发来的包,一般的包是0x30303030,控制包是0x69696969,中断被调试系统的包是0x62626262。每次读一个字节,连续读4次来识别出包。中断系统的包很特殊,包里数据只有0x62626262。包标识符后是包的大小、类型、包ID、检测码等,包头后面就是跟具体的数据。这点和网络上传输的包很相似。还有一些相似的地方比如每发一个包给调试器都会收到一个ACK答复包,以确定调试器是否收到。若收到的是一个RESEND包或者很长时间没收到回应,则会再发一次。对于向调试器发送输出字符串、报告SYMBOL情况等的包都是一接收到ACK包就立刻返回,系统恢复执行,系统的表现就是会卡那么短短一下。只有报告状态的包才会等待内核调试器的每个控制包并完成对应功能,直到发来的包包含继续执行的命令为止。无论发包还是收包,都会在包的末尾加一个0xaa,表示结束。现在我们用几个例子来看看调试流程。记得我以前问过jiurl为什么WinDBG的单步那么慢(相对softICE),他居然说没觉得慢?*$&$^$^(&(&;(我ft。现在可以理解为什么WinDBG的单步和从操作系统正常执行中断下来为什么那么慢了。单步慢是因为每单步一次除了必要的处理外,还得从串行收发包,怎么能不慢。中断系统慢是因为只有等到时钟中断发生执行到KeUpdateSystemTime后被调试系统才会接受来自WinDBG的中断包。现在我们研究一下为什么在KiDispatchException里不能下断点却可以用单步跟踪KiDispatchException的原因。如果在KiDispatchException中某处下了断点,执行到断点时系统发生异常又重新回到KiDispatchException处,再执行到int 0x3,如此往复造成了死循环,无法不能恢复原来被断点int 0x3所修改的代码。但对于int 0x1,因为它的引起是因为EFLAG寄存中TF位被置位,并且每次都自动被复位,所以系统可以被继续执行而不会死循环。现在我们知道了内部机制,我们就可以调用KdXXX函数实现一个类似WinDBG之类的内核调试器,甚至可以替换KiDebugRoutine(KdpTrap)为自己的函数来自己实现一个功能更强大的调试器,呵呵。

如何使用WinDbg调试进程信息

使用WinDbg调试进程信息的步骤:1、百度搜索下载windbg软件(建议去微软网站上下载),运行windbg2、打开windbg程序3、按F6或者是 file——>Attach to a Proces4、然后就能看到本机所有的进程信息5、选择一个进程,这里选择chrome浏览器的进程6、弹出提示框选择yes7、然后出现中断,chrome浏览器不能使用,在输入框里面输入G 然后按回车开始8、开始调试输出9、切换过去吧Chrome浏览器关闭掉,然后windbg调试也退出,接着只要保存数据即可。

如何使用Windbg分析崩溃dump

需要为Windbg软件设置符号表路径,作为蓝屏原因分析数据库,否则软件将没有作用。单击File--选择Symbol File Path,在弹出的对话框Symbol Path文本框中输入SRV*C:Symbols*http://msdl.microsoft.com/download/symbols,单击OK。设置完毕后单击File--选择Open Crash Dump来打开蓝屏文件,在弹出的对话框中点选到C:WindowsMinidump文件夹,单击我们要分析的蓝屏文件,单击打开。在弹出的对话框Save Information for workspace?(是否保存信息到工作区)中单击Yes。(如果下次不想再被提示,可以勾选Don"t ask again in the WinDbg session)。接下来就是对文件进行分析,这需要一定的经验和知识。这里我们着重可以看一下System Uptime(开机时间)和Probably Caused By(可能引起故障的原因是)。需要进一步分析,可以单击!analyze -v,此时我们可以从中提取到蓝屏错误代码和引起蓝屏的程序名称,再通过网络搜索这些程序名和代码等方式弄清原因。
 1 2  下一页  尾页