目录
1. 调试工具VisualDDK:
2. Vista以下的版本系统设置:
3. Vista以上的版本系统设置:
4. 1394火线调试
5. 使用串口线双机调试
6. 调试过程中出现的问题及解决方案
7. 快速下载符号文件离线包
1. 调试工具VisualDDK:
1. 安装VisualDDK.
2. WMware 拷贝target文件夹,运行wminstall.exe 配置调试信息。
3. 宿主机启动vmmon程序监控虚拟机。
2. Vista以下的版本系统设置:
1. VMware 配置
首先,VMware 打开系统盘根路径下的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="MicrosoftWindows XP Professional" /noexecute=optin /fastdetect /noguiboot
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Windows XP Debug" /noexecute=optin /fastdetect /debug /debugport=com1 /baudrate=115200
最后,编辑Vmware设置,添加一个串口设备.
首先我们要添加一个串口设备.打开你的虚拟机,选择“编辑虚拟机设置”
然后"Add...(添加)"->"Serial Port(串口)"->"Output to namedpipe(输出到命名管道)"一路Next
名称就用默认的"\\.\pipe\com_1",这个其实对应于你的串口名称com1,用别的名字当然也可以,不过windbg中要用对应的名字
第二行选择"Thisend is the server"
第三行选择"Theother end is an application"
2. windbg所在宿主系统设置
创建windbg快捷方式,参数中添加 -b -k com:pipe,port=\\.\pipe\com_1,resets=0,
系统符号路径设置: srv*D:\symbols*http://msdl.microsoft.com/download/symbols;
3. Vista以上的版本系统设置:
1. VMware 配置
Vista以上的系统没有了boot.ini, 用bcdedit.exe命令行来配置
首先, 拷贝当前的配置:
bcdedit /copy {current} /d "Vista Debug"
查询到一个 GUID 值
其次, 启动配置的调试功能:
bcdedit /debug {之前查询到的GUID} ON
也可通过msconfig实现
再次, 修改调试的设置(可选)
bcdedit /dbgsettings SERIAL DEBUGPORT:1 BAUDRATE:115200
2. 宿主系统设置与Vista以下的版本系统设置相同。
4. 1394火线调试
具体方法如下:
WMware虚拟系统主机配置:
在boot.ini里面加一行:
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Windows XP 1394" /noexecute=optin /fastdetect /debug /debugport=1394 /channel=10
channel是10,然后禁用1394(2000必须禁用,xp以上不需要,系统会在进debug后自己禁用),重启,选这个选项进系统。
调试机配置:
安装windbg(最好是用微软的安装包安装,不是copy),然后把1394线拔了,然后windbg,按Ctrl+K,选择1394,填入10(这里的10是上面的channel),然后确定,这时候windbg会自动安装一个虚拟的1394的驱动,然后会wait to connect,这时候插上线,就可以调试了。
以后可以在windbg的快捷方式里面填上启动选项 -k 1394:channel=10,symlink=instance
这样可以快速启动1394调试
二、被调试机:WIN7, 调试机:XP
主机端还是XP,目标机是WIN7笔记本,调试一个蓝屏错误。
1>. 调试端,配置不变
2>. 被调试端,也就是WIN7平台的配置
使用bcdedit.exe命令行工具进行配置,该工具用于修改启动配置数据库。
比起以前的vista,win7的配置略微简单,可通过msconfig实现,也可以通过命令行实现:
首先,以管理员身份运行cmd,然后输入msconfig,弹出系统配置的窗口,选择“引导”:可看到当前系统的引导项。
在cmd里输入bcdedit,会显示当前系统的所有启动项。
现在,我们拷贝一个当前的启动项,然后修改属性,进行1394调试:
命令:bcdedit /copy {current} /d "1394 debug"
注:此时如果已经打开msconfig,则关闭,再重新打开一次,否则看不到新拷贝的启动项。
执行此命令以后,会在"引导"下面多出一个名为“1394 debug”的启动项,选中“1394 debug",然后选择“高级选项”,在“引导高级选项”窗口中设置 调试、调试端口(1394),通道(10,通道编号一定要与主机同步)。
其它的根据个人需求设置。
退出“高级选项”,还可以设置默认启动项,超时等选项。
注:也可以全部通过bcdedit命令来实现整个过程,在cmd里输入 bcdedit /?具体查看帮助
3>. 通过1394线将target和host机器联起来,在target(WIN7)机器上安装出现蓝屏问题的驱动程序,重启,选择debug模式;同时在host主机端打开调试器等待连接。然后就是自动或者主动加载符号表,调试问题~~
5. 使用串口线双机调试
环境:host (无串口thinkpad ) 、 target (有串口台式机)
额外: 购买一条USB转串口线,并安装驱动在thinkpad上。
第一步: ComPort-测试串口线 thinkpad使用端口显示为COM4, 台式机显示为COM1. 经测试
OK。
第二步: 设置target 的 boot.ini文件为:
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS = "Debug Serial" /noexecute=optin /fastdetect /debug /debugport=com1 /baudrate = 115200
第三步: 安装windbug 在快捷方式 目标中:添加 -k com:port=COM4,baud=115200 -b
设置vista和win7进入Debug模式(也可以直接在msconfig的界面中设置):
1. bcdedit /copy {current} /d DebugEntry
这里的debugentry 新的启动项的描述。
2. bcdedit
会显示 各项的详细信息,找到 decription 为 DebugEntry 的项,找到GUID,记下值
3. bcdedit /debug DebugEntry的GUID on
打开调试选项,红色的为你可以改的内容
注意:
如果有其他的操作系统使用:bcdedit /displayorder {current} {GUID} 给启动菜单排序
如果Debug模式不能调试使用:bcdedit /dbgsettings serial baudrate:115200 debugport:1 试试。
6. 调试过程中出现的问题及解决方案
1. win7 x64 系统 VMware 8.0 虚拟机链接是出现com1端口无法链接调试的问题。
解决方案:
Vmware设置,添加一个串口设备com_2端口
windbg 快捷键设置 -b -k com:pipe,port=\\.\pipe\com_2,resets=0,
以XP中的问题举例,看下面的虚拟机配置,如果这里显示串行端口,那么boot.ini中需要设置/debugport=com1
但是有的时候下面图中显示为“串行端口 2”,那么boot.ini中需要设置/debugport=com2,否则怎么都连不上。
2.设置输出打印消息
在HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager目录下新建一项Debug Print Filter
在Debug Print Filter之下建立类型为DWORD、名称为DEFAULT、值为8的条目。名称DEFAULT是大小写相关的,如果建成Default好像会启动不了。
重启OS
要进行这个设置的原因是,在vista和win7下面,KdPrint宏的意义被修改成了按照条件打印消息,即以下两条程序语句是等效的
KdPrint ( Format, arguments )
KdPrintEx ( DPFLTR_DEFAULT_ID, DPFLTR_INFO_LEVEL, Format, arguments )
3. symbols path设置
cache*E:\symbols;SRV*http://msdl.microsoft.com/download/symbols;
E:\filter\filespy\filter\objchk_wnet_x86\i386
4.source path 设置
E:\filter\sfilter;E:\filter\filespy\filter;
7. 快速下载符号文件离线包
您可以使用 SymChk.exe 实用程序验证符号并以方便、非入侵性的方式生成本地符号高速缓存。SymChk.exe 实用程序随 Debugging Tools for Windows 软件包提供。SymChk.exe 是一种命令行工具。您可能需要将 Debugging Tools for Windows 软件包的文件夹添加到系统上的 PATH 环境变量,以便从任意命令提示符下访问该工具。
要使用 SymChk.exe 实用程序下载 Windows\System32 文件夹中所有组件的符号文件,请使用以下命令行命令:
symchk /r c:\windows\system32 /s SRV*c:\symbols\*http://msdl.microsoft.com/download/symbols
在此示例中:
“/r c:\windows\system32”查找 System32 文件夹和所有子文件夹中的所有符号文件。
“/s SRV*c:*http://msdl.microsoft.com/download/symbols”指定用于符号解析的符号路径。在此例中,“c:\symbols”是将在其中从符号服务器复制符号的本地文件夹。
要获取 SymChk.exe 命令行选项的更多信息,请在命令提示符下键入 symchk /?。其他选项包括指定正在运行的可执行文件的名称或进程 ID (PID) 的功能。