使用windbg调试

上传人:子 文档编号:43399652 上传时间:2018-06-06 格式:DOC 页数:8 大小:33.50KB
返回 下载 相关 举报
使用windbg调试_第1页
第1页 / 共8页
使用windbg调试_第2页
第2页 / 共8页
使用windbg调试_第3页
第3页 / 共8页
使用windbg调试_第4页
第4页 / 共8页
使用windbg调试_第5页
第5页 / 共8页
点击查看更多>>
资源描述

《使用windbg调试》由会员分享,可在线阅读,更多相关《使用windbg调试(8页珍藏版)》请在金锄头文库上搜索。

1、使用使用 WinDBGWinDBG 调试调试-基本方式-一.Target 和 Host 需要能连通一般就是用零调制解调器(Null-Modem)连接 Target 和 Host,然后用超级终端来测试一下(选择同样的波特率,连上去,打字看看).二.Target 要能调试方式启动在原来的 boot.ini 文件里除了原来正常的启动行外,新加一行,其最后加上新的参数:/DEBUGPORT=com1 /BAUDRATE=115200一般是这样的,如果不行,就调整参数,把其他的启动参数都去掉,就剩下/fastdetect 和这些新加的参数.如果运行的是调试版的 windows(很难得到),那么参数还得加

2、上:/Kernel= /HAL=三.Host 设置1.符号WinDBG 是符号调试器,你得设置好要调试的驱动程序和操作系统的符号信息,才能让 WinDBG 很好的工作.File/Symbol File Path 菜单里,在对话框里输入符号文件的路径;可以输入一个路径或者多个(用;分隔);要获取自己要调试的驱动的符号文件很简单,因为每次编译都有一个.pdb 文件,你只要告诉 windbg 这个符号文件的位置就可以了(或者你把这个 pdb 文件拷贝到设置好了的 windbg 的 symbol file path 对应的路径下,也可以).而对于操作系统的符号路径,微软有符号服务器来自动找和你系统对应

3、的符号文件,所以最好是用:SRV*D:Symbolswebsymbols*http:/ sp 版本,hot fix 都有可能影响更新对应的符号文件,所以最好让符号服务器自动来做.(它是你需要什么符号,就自动下载对应版本的给你).2.源码设置好了符号文件路径,下面就是设置源码路径了.这个路径允许调试器在 crash 发生或者动态断点触发的时候显示源码.FileSource File Path 菜单里,在对话框里输入源码路径;可以输入一个路径或者多个(用;分隔);3.调试哪个 Target要告诉 WinDBG 去调试哪个 Target.WinDBG 可以调试应用程序,崩溃转储文件,远程调试,以及内

4、核调试.内核调试的话,File/Kernel Debug,有三个选项卡,选择 COM,输入好信息.注意这里的 Port 不是 Target 上的 Port(boot.ini 里那指定的),而是 Host 上要连接到 Target 的 COM PORT,这两个 Port 是看实际机器的情况的.波特率要和 Target 一致;4.开始调试一旦设置好了调试接连参数(三.3),点击 OK 按钮.WinDBG 将显示消息表示它在等待 reconnect(重新连接).如果 Target 已经 reboot 到调试模式下,你将能通过 DebugBreak 菜单强制 WinDBG 去控制 Target Sys

5、tem.如果 Target 还没有 reboot 到调试模式下,你能在任何时候这么做(在 Target 上去 reboot,并且用 debug 模式进行 reboot),Windbg 将自动在 Target boot 的时候连接上去.-VMWare 方式单机调试-这可是好东西,可以让 WinDbg 进行单机调试(比 live kd 好用多了,live kd 那种模拟 crash dump 的机制有点烦).基本就是通过 WinDBG 支持的 pipe 进行调试,在 wmware 虚拟系统里,虚拟一个 com 口,通过这个虚拟的 com 口进行调试.1.设置 vmware 的虚拟 com编辑虚拟机

6、器设置,点击“Add.“来运行 vmware 的硬件向导,选择“serial port“后 next,选择第三项:Output to named pipe 然后next,第一框里保持默认的“.pipecom_1“,第二框选择“This end is the server.“,第三框里选择“The Other end is an application“,选择“connect at power on“,然后点击“Advanced“,出现的对话框中选中“Yield CPU on poll“.最后点完成.重新启动一下.2.设置 Target ospower on 在 1 中搞好的虚拟机,编辑下面的

7、boot.ini其中 “ multi(0)disk(0)rdisk(0)partition(1)WINNT=“Microsoft Windows 2000 Professional“ /fastdetect “是原来的行。“ multi(0)disk(0)rdisk(0)partition(1)WINNT=“Microsoft Windows 2000 Professional - debug“ /fastdetect /debug /debugport=com1 /baudrate=115200 “ 是我新加的将来用于 WinDbg 调试的行。注意,com1 是因为我们虚拟的就是 com1.

8、在设备管理器中把 COM1 端口的速度(也就是每秒位数 项),设为上面一样的 115200.3.设置 WinDbg我们需要告诉 WinDbg 通过 pipe 进行连接和连接的速度。可以在命令提示符(cmd.exe)下加参数-k com:port=.pipecom_1,baud=115200,pipe 运行WinDbg(VMware Support 中没有提到 baud=115200 这个参数,其实这是个比较重要的参数) 。更方便的方法是在桌面建立一个 WinDbg 的快捷方式,在该快捷方式的属性,“目标“框中,加上参数 -k com:port=.pipecom_1,baud=115200,pi

9、pe 。这样运行这个快捷方式启动的 WinDbg 就完成了设置。参数的具体作用,可以参考 WinDbg 的帮助文件。4.推荐的操作顺序A.运行 VMWare,启动 Target,到系统选择时(就是你有多个引导选项了,boot.ini),选择有 Debug 的那个,但是不要回车确认.B.通过刚才设置好的快捷方式运行 WinDbg.C.在 Target OS 上选择有 Debug 的项目,回车确认.D.稍等片刻就连接上了,如果很长时间都没有连接上的话,按DebugKernel connectionResynchronizerE.现在可以 DebugBreak 了,可以向 WinDBG 下命令了.-

10、将目标机的用户态调试重定向到宿主机的内核调试器-1.先完成虚拟机(目标机)和宿主机(真实机)关于内核调试的设置,也就是上一个章节中描述的 vmware 单机调试;2.在目标机上也安装 windbg.3.要重定向用户态调试到核心态,需要在目标机器中使用用户态调试程序 ntsd,加上-d 参数。例如:首先在 VM 中启动 notepad,然后用 ntsd d pn notepad.exe 启动用户态调试,-d 参数重定向调试到核心态。当摁下 ntsd 命令的回车后,notepad 和目标 OS 都会同时挂起。在调试会话中,会看到用户态调试的输出,以及用户态调试器的提示符 0:000。这个时候可以输

11、入用户态调试命令进行调试。4.如何在用户态和核心态调试中切换?用户态-核心态 用 .breakin 命令,该命令切换到核心态调试器下,当前进程环境是目标机上的 ntsd.核心态-用户态 用 g 命令就可以了5.用户态进程退出的时候,中断到调试器的用户态调试环境中,这个时候无法使用 g 命令,可以用 q 命令退出用户态调试环境.-为什么要搞这个玩意?对某些用户态的程序来说,并不是可以方便地启动普通用户态调试器进行调试。比如 Windows Services, WinLogon 进程,以及其它先于 Windows 桌面和用户界面模块启动的进程。对于这样的程序来说,由于需要调试的时机先于用户态界面,

12、就无法启动普通的用户态调试器进行调试。对于某些系统模块来说,直接使用用户态调试器进行调试,可能导致死锁。比如 lsass.exe 进程是控制 Windows 认证的用户态进程。调试程序本身需要一定权限,也是要进行认证的。如果用用户态进程调试 lsass.exe,首先需要认证,但是管理认证的进程又是正在被调试的 lsass.exe需要同时监视用户态程序和核心态的问题,把两者合在一起显然是一种很好的办法。-6.如果需要对某些用户态进程进行自动重定向,而不是每次都运行ntsd,可以通过修改“Image File Execution Options”完成。比如建立 notepad 子键,创建字符串键值

13、,名称为 debugger,值为” C:debuggerntsd.exe d” 。这样每次 notepad 启动的时候,ntds就会自动启动进行重定向。如果需要忽略进程每次启动和结束时候的调试事件,可以加上-g 和-G 参数。对于用户态态调试,如果觉得在 kernel session 中不方便,可以通过.dump 命令把用户态 dump 保存下来,然后用普通的用户态调试器检查。例如:HKEY_LOCAL_MACHINESoftwareMicrosoftWindows NTCurrentVersionImage File Execution OptionsWinLogon.EXEDebugger

14、 to:ntsd -d -x -g -下面是一个实际的 XP 的 boot.ini 例子-boot loadertimeout=30default=multi(0)disk(0)rdisk(0)partition(1)WINDOWSoperating systemsmulti(0)disk(0)rdisk(0)partition(1)WINDOWS=“Microsoft Windows XP Professional“ /noexecute=optin /fastdetectmulti(0)disk(0)rdisk(0)partition(1)WINDOWS=“Microsoft Windows XP Professional Debug“ /noexecute=optin /fastdetect /debug /debugport=com1 /baudrate=115200-下面是

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号