使用Virtual PC进行Windows内核调试的详细过程
2007-11-02 23:32:46 来源:WEB开发网核心提示:使用WinDbg进行Windows内核调试通常需要两台计算机,一台是Debuggee,使用Virtual PC进行Windows内核调试的详细过程,一台作为Debugger,又成为Host,应该运行虚拟PC,哪怕只到启动选项也可以,使用virtual pc(parallels的虚拟机平台)可以在同一台电脑上进行内核调试
使用WinDbg进行Windows内核调试通常需要两台计算机,一台是Debuggee,一台作为Debugger,又成为Host。使用virtual pc(parallels的虚拟机平台)可以在同一台电脑上进行内核调试,对于某些调试任务来说还是非常有用的。
下面以virtual pc(parallels的虚拟机平台) 2004为例,介绍一下利用virtual pc(parallels的虚拟机平台)进行Windows内核调试的详细过程。
1,下载并安装virtual pc(parallels的虚拟机平台) 2004,从略。
2,启动Virutal PC Console(控制台),创建一台新的虚拟PC,安装向导的提示配置硬盘、内存等参数。
3,在刚才创建的虚拟PC上安装操作系统,这个操作系统应该是你要调试的Windows版本。比如你想调试你的驱动程序在Windows Server 2003上出现的问题,那么就安装Windows Server 2003。我们以Windows 2000为例。
4,配置虚拟PC的串行口,在virtual pc(parallels的虚拟机平台)的控制台中选择Windows 2000,然后点击Settings按钮弹出设置对话框,然后在左侧的列表中(如下图)选择COM1。
右侧选择Named Pipe选项,即使用命名管道来模拟串行口,然后输入管道的完整名称:file://./pipe/com_1,com_1可以为其它名称,但是前面的部分应该保持不变。
5,启动虚拟PC中的Windows 2000,然后进入命令行窗口,执行如下命令以便在启动菜单中增加调试选项:
c:
cd\
attrib -r -h
edit boot.ini
然后将其最末一行复制,并加入调试选项,成为为如下状态:
6,在虚拟PC中选择重新启动Windows 2000,当出现启动菜单时,按方向键使其停止自动计时,等待在这里。
7,在主机(debugger)上准备启动WinDbg,考虑每次输入命令行参数太麻烦,所以建议建立一个如下内容的批处理文件,并将其放到与WinDbg.exe同位置的目录中。
windbg -k com:pipe,port=\\.\pipe\com_1
8,运行批处理文件,使其也进入等待状态:
9,切换到虚拟PC窗口,选择带有“Debug Enabled”的一项然后回车启动。
10,切换到WinDbg窗口并观察,如果一切顺利,那么会有如下类似信息输出:
Connected to Windows 2000 2195 x86 compatible target, ptr64 FALSE
Kernel Debugger connection established.
Symbol search path is: SRV*c:\symbols*
http://msdl.microsoft.com/download/symbols
Executable search path is:
Windows 2000 Kernel Version 2195 UP Free x86 compatible
Kernel base = 0x80400000 PsLoadedModuleList = 0x8046a4c0
System Uptime: not available
11,见到如上信息就说明WinDbg已经与虚拟PC中运行的Windows 2000成功建立调试对话了。如果想感受一下将Windows控制于股掌之中的快感,那么就按下Ctrl+Break,随着按键发出,Windows 2000会被立刻定住。WinDbg中会显示如下信息:
You are seeing this message because you pressed either
CTRL+C (if you run kd.exe) or,
CTRL+BREAK (if you run WinDBG),
on your debugger machine's keyboard.
THIS IS NOT A BUG OR A SYSTEM CRASH
If you did not intend to break into the debugger, press the "g" key, then
press the "Enter" key now. This message might immediately reappear. If it
does, press "g" and "Enter" again.
此时WinDbg的命令提示符区会显示一段时间*BUSY*(或者其它无效状态,老本本的WinDbg),这是因为WinDbg在寻找调试符号。
在你非常熟悉以上过程之后,其实可以不完全拘泥以上过程的, 比如可以先让Windows 2000以调试选项运行起来,然后再运行WinDbg。
最后再介绍几种常见的失败情况:
1)启动WinDbg,但是出现下图所示的错误信息,Win32 error 2,即指定的文件名找不到,这是因为虚拟PC还没有启动,还没有创建这个管道file://./pipe/com_1, 系统中不存在这样的文件。应该运行虚拟PC,哪怕只到启动选项也可以,便不会再有这个错误了。
posted on 2006年4月27日 21:19 由 Raymond
下面以virtual pc(parallels的虚拟机平台) 2004为例,介绍一下利用virtual pc(parallels的虚拟机平台)进行Windows内核调试的详细过程。
1,下载并安装virtual pc(parallels的虚拟机平台) 2004,从略。
2,启动Virutal PC Console(控制台),创建一台新的虚拟PC,安装向导的提示配置硬盘、内存等参数。
3,在刚才创建的虚拟PC上安装操作系统,这个操作系统应该是你要调试的Windows版本。比如你想调试你的驱动程序在Windows Server 2003上出现的问题,那么就安装Windows Server 2003。我们以Windows 2000为例。
4,配置虚拟PC的串行口,在virtual pc(parallels的虚拟机平台)的控制台中选择Windows 2000,然后点击Settings按钮弹出设置对话框,然后在左侧的列表中(如下图)选择COM1。
右侧选择Named Pipe选项,即使用命名管道来模拟串行口,然后输入管道的完整名称:file://./pipe/com_1,com_1可以为其它名称,但是前面的部分应该保持不变。
5,启动虚拟PC中的Windows 2000,然后进入命令行窗口,执行如下命令以便在启动菜单中增加调试选项:
c:
cd\
attrib -r -h
edit boot.ini
然后将其最末一行复制,并加入调试选项,成为为如下状态:
6,在虚拟PC中选择重新启动Windows 2000,当出现启动菜单时,按方向键使其停止自动计时,等待在这里。
7,在主机(debugger)上准备启动WinDbg,考虑每次输入命令行参数太麻烦,所以建议建立一个如下内容的批处理文件,并将其放到与WinDbg.exe同位置的目录中。
windbg -k com:pipe,port=\\.\pipe\com_1
8,运行批处理文件,使其也进入等待状态:
9,切换到虚拟PC窗口,选择带有“Debug Enabled”的一项然后回车启动。
10,切换到WinDbg窗口并观察,如果一切顺利,那么会有如下类似信息输出:
Connected to Windows 2000 2195 x86 compatible target, ptr64 FALSE
Kernel Debugger connection established.
Symbol search path is: SRV*c:\symbols*
http://msdl.microsoft.com/download/symbols
Executable search path is:
Windows 2000 Kernel Version 2195 UP Free x86 compatible
Kernel base = 0x80400000 PsLoadedModuleList = 0x8046a4c0
System Uptime: not available
11,见到如上信息就说明WinDbg已经与虚拟PC中运行的Windows 2000成功建立调试对话了。如果想感受一下将Windows控制于股掌之中的快感,那么就按下Ctrl+Break,随着按键发出,Windows 2000会被立刻定住。WinDbg中会显示如下信息:
You are seeing this message because you pressed either
CTRL+C (if you run kd.exe) or,
CTRL+BREAK (if you run WinDBG),
on your debugger machine's keyboard.
THIS IS NOT A BUG OR A SYSTEM CRASH
If you did not intend to break into the debugger, press the "g" key, then
press the "Enter" key now. This message might immediately reappear. If it
does, press "g" and "Enter" again.
此时WinDbg的命令提示符区会显示一段时间*BUSY*(或者其它无效状态,老本本的WinDbg),这是因为WinDbg在寻找调试符号。
在你非常熟悉以上过程之后,其实可以不完全拘泥以上过程的, 比如可以先让Windows 2000以调试选项运行起来,然后再运行WinDbg。
最后再介绍几种常见的失败情况:
1)启动WinDbg,但是出现下图所示的错误信息,Win32 error 2,即指定的文件名找不到,这是因为虚拟PC还没有启动,还没有创建这个管道file://./pipe/com_1, 系统中不存在这样的文件。应该运行虚拟PC,哪怕只到启动选项也可以,便不会再有这个错误了。
posted on 2006年4月27日 21:19 由 Raymond
更多精彩
赞助商链接