好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

windbg双机调试.doc

15页
  • 卖家[上传人]:
  • 文档编号:42919971
  • 上传时间:2018-06-04
  • 文档格式:DOC
  • 文档大小:24.36KB
  • / 15 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • windbgwindbg 双机调试双机调试心里总感觉 SOFTICE 的发展快到末路了果然在 2006 年时Compuare 宣布停止 SOFTICE 开发这里消息确实令很多人心痛但与此同时,Windows 的配套调试器 windbg , cdb 等不断更新,功能不断强大,你必须选择它,虽然它内核调试速度不理想后来我知道了 syser debuger, 国人写的不错的调试器,基本上 SOFTICE 命令等相似,上手很快,单机调试即可,速度挺快但是要开发 windows 内核程序,最好还是 windbg,至少 windbg 与系统的兼容肯定不会差吧因为我自己的机器配置不高,所以平时玩的时候就用 syser , 但在公司真正解决问题时还是用 windbgwindbg 除了速度慢点(还能忍受,现在我公司的机器是AMD 双核的),还有就是初次使用配制比较麻烦,你如果真实的使用 2 台机器调试那问题可能会更多我每次重装系统后,都要上网找资料然后一遍遍配制挺烦人的,这次总结一下首先,先下载 程序的最新版本,同样也安装到真实系统中接下来我们要在虚拟机中装系统了,我用的是 WinXP SP2安装完成后修改 boot.ini 文件。

      在里面[operating systems]节中加入一行,“ multi(0)disk(0)rdisk(0)partition(1)\WINDOWS=“Microsoft Windows?XP Professional - debug“ /fastdetect /debug /debugport=com1 /baudrate=115200 “随后关闭系统配制虚拟机的硬件,点击 “Edit virtual machine settings“,添加一个 Serial Port,选择“Output to named pipe“,然后下一步,第一框里保持默认的 “\\.\pipe\com_1“第二框里选“This end is the server.“第三框里选“The other end is an application.“选中 “Connect at power on“然后点击 “Advanced>>“ 然后在新窗口中选中 “Yield CPU on poll“保存退出好了,以上就是虚拟机系统要做的全部事情在真实系统中,我们要在设备管理器中找到 Com1 口,然后再属性页中修改他的速率为 115200。

      然后为使用方便,创建一个 WinDbg 的快捷方式快捷方式的命令行为“C:\Program Files\Debugging Tools for Windows\windbg.exe“ -y C:\Windows\Symbols\ -b -k com:port=\\.\pipe\com_1,baud=115200,pipe这里面-y 后面的路径就是我们前面安装符号表的路径使用时,首先运行虚拟机系统,到 bootloader 选择进入哪个系统的时候,我们先按一下上下,将倒计时停止然后再到真实系统中运行刚才我们创建的 WinDbg 快捷方式运行完成后再在虚拟系统中选择带有调试标志的系统即可此时回到真实系统,稍等一会就可以看到 WinDbg 输出信息告诉我们两个系统已经连接上了到此调试器已经和 VMware 虚拟机连接成功了,下面就可以进行期待已久的调试工作了原文地址: DESIGHED FOR WINDOWS 徽标时,发现有些开发驱动程序的工程师没有利用 windbg 这个功能强大的调试工具,所以本期特别向读者介绍调试工具 Windbg 前言绝大多数在 Windows 平台上研发软件的工程师都非常熟悉Microsoft Visual Studio, Visual Studio 方便友好的界面,强大的调试功能大大提高了工程师的工作效率和产品质量。

      Visual Studio 一般用于 user-mode 的程序开发,对于调试 kernel-mode 的驱动程序,微软提供了另一个功能强大的调试工具 Windbg(windbg也可以用于调试 user-mode 的程序),开发人员可以从网上免费下载( DESIGHED FOR WINDOWS 徽标时,发现有些开发驱动程序的工程师没有利用 windbg 这个功能强大的调试工具,所以本期特别向读者介绍调试工具 Windbg简介Windbg 可用运行于基于 X86, Intel Itanium, or AMD64 处理器的机器上,可以运行在所有基于 NT 的操作系统上,可以调试这些操作系统本身和运行于其上的应用程序,服务,驱动程序这里所说的基于 NT 的操作系统包括:Microsoft Windows NT? 4.0 Microsoft Windows? 2000 Microsoft Windows XP Microsoft Windows Server? 2003 Microsoft Windows codename “Longhorn“ Windbg 源码级调试使用和 Microsoft Visual Studio 相同的 Symbol格式,Windbg 可以查看源代码,设置断点,查看变量,内存,堆栈。

      需要特别指出的是,Kernel-mode 调试需要两台计算机,一台作为主机(host) ,另一台作为目标机(target) Windbg 还支持远程调试Kernel-mode debug Setup Kernel-mode 调试需要两台计算机通过 Null-modem(或者 1394)线连接起来,目标机和主机可以运行不同的系统,对于某一种系统,既可以运行 Free build,也可以运行 Checked build通常主机都是运行速度快的 Free build 版本的系统,目标机可以根据调试的需要运行 Free build 或 Checked build特别提醒一下,开始调试前,可以先用超级终端检查两机之间的物理连接能否正常工作目标机的配置工作主要是编辑 boot.ini 文件,指定和主机通讯的串口,波特率等,可以使用工具 bootcfg.exe 或 msconfig.exe如果手工编辑,通常需要先修改该文件的属性,编辑前最好先做个备份修改属性:attrib -s -h -r boot.ini恢复属性:attrib +s +h +r boot.ini典型的用于调试的 boot.ini:[boot loader] timeout=30 default=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=115200 multi(0)disk(0)rdisk(0)partition(1)\WINDOWS=“Microsoft Windows XP Professional“ /fastdetect 主机端的配置相对简单,只要在 Windbg 的 File 菜单中选 Kernel debug,选择相应的串口和波特率就可以了。

      Replacing driver files在驱动程序开发调试过程中,需要频繁地替换系统中的驱动程序,由于 Windows 的保护机制,替换工作常常需要系统启动为安全模式,并多次重新启动Windows XP 或之后的操作系统提供了一种方便的替换方法只要在主机上建一个文本文件描述需要替换的驱动程序就能实现,格式为:map\Systemroot\system32\drivers\videoprt.sys\\myserver\myshare\new_drivers\videoprt.sys如果该文本文件名为 mymap.ini, 只要在 windbg 中指定该文件名就行:set _NT_KD_FILES=d:\Map_Files\mymap.iniSymbol 文件源文件被编译连接产生可执行代码.exe 或.dll,编译器和连接器同时还生成.pdb 文件,这就是所谓的 Symbol 文件,Symbol 文件包含了实际执行代码不需要的信息,这些信息是用于开发人员调试的,一般包括:全局变量局部变量函数名及其入口地址FPO(frame pointer omission)数据(用于 Stack trace)源码行号根据编译选项不同,可执行代码和 Symbol 文件所包含的信息量也不同。

      通常编译器会对代码进行优化,用于调试的信息会减少,为了方便开发人员调试,微软对基于 NT 的操作系统提供了两个版本:Free Build(or retail build)Checked Build(or debug build)Checked build 含有更多的调试信息,可以通过订购 MSDN 获得调试时必须保证执行代码和 Symbol 文件的匹配,这对于开发一个小的程序或项目不是问题,但对于大型项目或调试时需要操作系统的调试信息时,版本匹配将是一个非常繁琐的问题,这个问题可以通过 Symbol server 解决开发人员可以利用工具 Symstore.exe 来构建一个 Symbol server对于操作系统模块的 Symbol 文件,微软提供了一个 Public symbol store,只要你的调试主机能够连接到 Internet,就可以指向该站点,Windbg 会自动从该站点获取匹配的 Symbol 文件Debugger extensionsWindbg 提供了丰富的扩展命令,这些命令是操作系统开发人员开发,用来调试操作系统的,驱动程序开发人员可以利用这些命令来获取和其开发的驱动程序相关的系统的信息。

      例如:? !analyze –v 当系统 crash 或发生异常时,通常用来分析出错的原因 !peb, !teb 以易读的格式显示 PEB and TEB 的内容? !heap 解析 heap 的状态? !handle 获取 handle 的信息? !token Dump 安全 token开发人员还可以开发自己的扩展命令,方便地分析自己的数据结构,对象,事件Remote debug远程调试在许多场合非常有用,例如开发工程师不再出现错误的现场,或者开发工程师需要异地的其他技术人员帮助这时现场的工程师只要建立好调试环境,复现错误,然后异地的技术人员的计算机只要能通过网络连接到现场的主机就能实现远程调试Dump 文件并非所有错误都能在调试阶段测试和复现出来,当系统在真实环境下运行并发生错误,出现蓝屏时,操作系统能将现场保存起来,Windbg 能在事后对保存的数据进行分析在“我的电脑-〉属性-〉启动和故障恢复”中,用户可以设置转储类型:(无)小内存转储核心内存转储完全内存转储利用 windbg 对 dump 文件进行分析时,同样需要 symbol 文件。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.