WinXp双机调试环境搭建
所需步骤:
①配置WinXp系统启动项,将Windows设置为调试执行。
②配置VMware的管道虚拟串口
③配置WinDbg
④设置Windows内核符号表
配置WinXp系统启动项
打开虚拟机中Windows的系统盘C盘,在文件夹选项中设置为显示所有文件,然后找到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="Microsoft Windows XP Professional" /noexecute=optin /fastdetect
将最后一行复制 ,粘贴到文件末尾,并加上 /debug /debugport=com1 /baudrate=115200。修改结果如下:
[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="Microsoft Windows XP Professional" /noexecute=optin /fastdetect
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional" /noexecute=optin /fastdetect /debug /debugport=com1 /baudrate=115200
保存这个.ini文件,重启系统,在启动时就可以看到菜单,可以进入正常的Windows Xp系统,也可以进入Debug模式的Windows Xp。
Ps:如果不能保存,则需要在桌面新建一个boot.ini文件,注意ini后缀名,内容一样。然后复制到系统盘中的boot.ini所在文件夹,在出现弹框中选择“是”。(下图是为了展示步骤,与本次实验无关)
配置VMware的管道虚拟串口
调试机与被调试机用串口相连,但是在被调试机是虚拟机的情况下,就不肯用真正的串口来连接了。但是可以在虚拟机上生成一个用管道虚拟的串口。
在Windows Xp未启动界面,按以下步骤操作:
1.点击编辑虚拟机设置
2.直接点添加(不要点其它的),按图上序号来。如有打印机,可移除打印机,也可将下面的com_1改成com_2,因为打印机占了一个串口。
3.点完成后 ,在硬件界面中会出现串行端口(原本没有,步骤2的截图是已配置的)。双击,出现下图,按右侧配置。
配置WinDbg
老版本
有两种方法
1.在宿主机上,打开控制台(cmd窗口),进入WinDbg所在文件夹。
#输入命令
windbg.exe -b -k com:port=\\.\pipe\com_1,baud=115200,pipe #(先不要按回车)
2.将WinDbg创建桌面快捷方式,单击右键,选择属性,在目标中的“windbg.exe”后添加前面的启动参数。
修改之后 —— "E:\windbg.exe" -b -k com:port=\.\pipe\com_1,baud=115200,pipe
新版本(win10之后)
也可以去微软商店下载
按照以下参数进行配置连接
完成后
重启Windows Xp系统进入调试模式,当系统进入调试模式的同时,返回 调试机,按配置WinDbg执行命令windbg.exe -b -k com:port=\.\pipe\com_1,baud=115200,pipe, 或者WinDbg双击桌面快捷方式。
调试机中Windbg界面
我当前虚拟机系统界面
刚连接上是,虚拟机里的Windows系统会被中断,貌似死机,在WinDbg的命令提示符“kd>”后面输入“g”,并回车。
设置Windows内核符号表
在调试连接上后,打开WinDbg主菜单File下的Symbol File Path ,在这里输入符号表位置。符号表和sys文件产生在同一目录下,所以只要指定本机上编译结果所在的objchk_wxp_x86\i386目录就可以了。
如果有多个驱动需要调试,则可以指定多个路径,路径之间用分号分隔。
此外,需要指定Windows的内核符号表。可以在“Symbol File Path”中增加如下一条设置,用分号与其它路径隔开。c:\symbols为本地目录,从服务器下载的符号会存储在此目录中,你可以设置为你想存放的目录中。srv*c:\symbols*http://msdl.microsoft.com/download/symbols;
本文在原文的基础上略作修改,因为原文用的还是老版本的方法,但现在Win11已经不支持了。
原文链接:https://blog.csdn.net/team39/article/details/103386562