虚拟机是XP情况:

启动项添加调试启动,并设置波特率为115200

具体操作可在boot.ini中添加如下代码:

multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="MicrosoftWindows XP Professional" /noexecute=optin /fastdetect /debug /debugport=com1 /baudrate=115200

此处应该注意虚拟机中出现的是serial 1 还是serial 2,若是2,则需要修改、debugport=com2,否则导致连不上

注意看图:(图上的是2,即 com2,此时设置系统调试模式的时候的com要设为com2)

虚拟机是WIN7 WIN8 WIN10情况:

1.启动一个管理员权限的命令行窗口.

2.执行如下命令将当前的启动入口复制一份:

bcdedit /copy {current} /d "Kernel Debug"

其中双引号重的字符串为新启动入口的名称。如果执行成功显示类似如下的信息:

“已将该项成功复制到 {f349d9f9-660a-11e1-892b-b9453034af9f}。”

花括号中的内容是新启动入口的GUID,用来唯一标识这个启动入口。

3.执行如下命令对这个启动入口启动内核调试:

bcdedit /debug {f349d9f9-660a-11e1-892b-b9453034af9f} on

4.设置目标主机与主机间的通信参数

bcdedit /set {f349d9f9-660a-11e1-892b-b9453034af9f} debugtype serial

bcdedit /set {f349d9f9-660a-11e1-892b-b9453034af9f} debugport 1

bcdedit /set {f349d9f9-660a-11e1-892b-b9453034af9f} baudrate 115200

5.执行bcdedit 列出刚刚创建的启动项和参数,确认以上设置都已经被记录下来。

设置完成以后可以通过CMD-> msconfig的引导来查看结果 如图

整体命令:

bcdedit /copy {current} /d "Kernel Debug"bcdedit /debug {056a4d97-70f9-11e6-9068-a0e8445a84f6} on
bcdedit /set {056a4d97-70f9-11e6-9068-a0e8445a84f6} debugtype serial
bcdedit /set {056a4d97-70f9-11e6-9068-a0e8445a84f6} debugport 1
bcdedit /set {056a4d97-70f9-11e6-9068-a0e8445a84f6} baudrate 115200

虚拟机是SERVER 2012情况:

1.这里注意默认VM是有打印机的这样会造成串口1被暂用 恰好VM双机调试只能在串口1上 所以必须先删除打印机 再添加

未删除以前添加如图:

删除后添加如图:

vmware中的设置:

1.打开相应 vmware虚拟机上的 “Virtaul Machine Settings“

2. “Hardware”选项中 ----> 点击“Add" 添加一个串口设备 SeriallPort

3. "Next",在 "Serial Port" 里选中 “Output to named pipe"

4. "next",然后如下设置

5.  确定之后,回到如下界面,在右脚"Virtual Machine Settings"页面时,在“I/O Mode”里选中“Yield CPU on poll“

6.  Ok之后就设定完毕了。

Windbg设置

创建windbg的一个桌面快捷方式,然后,右键->属性,在目标中的引号后面添加如下:

-b -k com:pipe,port=\\.\pipe\com_1,resets=0

示例如下:

"C:\Program Files (x86)\Windows Kits\8.0\Debuggers\x86\windbg.exe" -b -k com:pipe,port=\\.\pipe\com_1,resets=0

还需要设置windbg以管理员身份运行,否则会出现拒绝访问的提示,具体设置如图:

操作方式提示

如果在虚拟机系统启动过程中,如果打开了windbg之后,整个系统就像死机,不动了。估计是windbg启动后设定了断点做调试,试试按F5,或者g这样就可以恢复原来的状态。

多系统同时调试的设置

比如想同时开启3个WINDBG调试VM中的XP,win7,win8.可以想象成有一台配置很强大的PC假定他为PC_A 他有3个串口,还有3台PC 每台PC只有一个串口,假定他们为PC_1,PC_2, PC_3现在需要让PC_A同时通过串口调试连接其他3台PC进行调试, 需要注意的地方有以下几点:

1.每个虚拟系统中设置都和以前一样,都设置为com1,这个可以理解为每个系统都只有一个串口设备,当然都是com1了

2.在vmware中的设置有变化,他直接对应的是PC_A,它有三个串口,所以设置分别为\\.\pipe\com_1   \\.\pipe\com_2  \\.\pipe\com_3 分别对应了PC_1 PC_2 PC_3的串口,这样一来PC_A就模拟出了3个串口,且分别和PC_1 PC_2 PC_3对应起来了 具体如图:

3.设置windbg,以前是创建一个windbg的快捷方式,现在是创建3个 分别设定为

"C:\Program Files (x86)\Windows Kits\8.0\Debuggers\x86\windbg.exe" -b -k com:pipe,port=\\.\pipe\com_1,resets=0

"C:\Program Files (x86)\Windows Kits\8.0\Debuggers\x86\windbg.exe" -b -k com:pipe,port=\\.\pipe\com_2,resets=0

"C:\Program Files (x86)\Windows Kits\8.0\Debuggers\x86\windbg.exe" -b -k com:pipe,port=\\.\pipe\com_3,resets=0

具体如图:

这样调试相应的PC_X时 运行相应的图标即可

windbg+VM 设置内核调试环境(双机调试)相关推荐

  1. Windbg双机调试环境配置(Windows7/Windows XP+VirtualBox/VMware+WDK7600)

    简介:Windbg双机调试内核.驱动 下载软件: 下载Windbg(GRMWDK_EN_7600_1.ISO) 下载VirtualBox 5.2/VMware 12 一.安装WDK,这里要提一点的是D ...

  2. 【旧文章搬运】Windbg+Vmware驱动调试入门(一)---Windbg的设置

    原文发表于百度空间,2009-01-08 ========================================================================== Wind ...

  3. 线程简介和MySQL调试环境搭建

    导读: 本文节选自八怪专栏<深入理解MySQL主从原理32讲>第29节 想内容请点击订阅专栏 注意:如果正文有图片不清晰可以将图片保存到本地查看(本文建议横屏观看效果更佳) 最后我想简单说 ...

  4. X86汇编调试环境搭建

    最近毕设需要做一个基于X86的微型OS内核,一直在学习汇编,前来记录一下 汇编环境搭建 本次使用vscode搭建的,需要的插件有X86 and X86_64 Assembly(也可以使用masm插件) ...

  5. 无人驾驶小车调试笔记(一)-- 调试环境部署

    硬件简介:硬件是NVIDA Jetson Nano为主控的差速控制小车,主要由主控板.转接板.两个电机(动力来源).高清摄像头.tof传感器.imu传感器.前后各两组车灯,顶部开关按钮.显示屏以及万向 ...

  6. 什么是调试?怎么调试?

    文章目录 调试 一.什么是BUG? 二.调试 什么是调试? 调试的基本步骤 如何发现bug的存在? Debug和Release 优化 三.常见错误 编译型错误 链接型错误 运行时错误 四.Visual ...

  7. 双机调试环境搭建 windbg + virtualkd

    双机调试环境搭建 1. 环境准备 2. 单独的windbg双机配置 2.1 设置GuestOS环境 2.2 设置HostOS环境 2.3 Windbg测试 3. 使用Virtualkd/Virtual ...

  8. 使用 VMware + win10 + vs2019 从零搭建双机内核调试环境

    我在前面的文章--<使用 VMware + win10 + VirtualKD + windbg 从零搭建双机内核调试环境>分享了使用 windbg 进行双机内核调试的环境搭建的步骤. 有 ...

  9. Windows 内核之双机调试与windbg命令大全

    在今后会有相当的实验环节,对于windows内核实验,调试环境是必不可少的,本章讲解双机调试的环境搭建与常见的WINDBG指令. 准备材料: VMware workstation : [https:/ ...

最新文章

  1. c语言重定义不同的基类型_简述usb连接器输出类型定义和不同环境下的用法
  2. 【Python】向函数传递列表
  3. MySQL数据库:编码
  4. 看门狗(Watch Dog)是嵌入式系统中一种常用的保证系统可靠性的技术,()会产生看门狗中断。【详细!小白也能看懂!】
  5. js for in 遍历对象与数组
  6. jsp是在html里面嵌入哪种代码?_再说嵌入式入门
  7. 自定义可扩展叠加头部的下拉控件
  8. Dynamips使用说明
  9. 机器人操作系统ROS是什么?
  10. IP地址与DNS的作用,什么是IP地址与DNS【详细】
  11. 网页数据提取----网络投票软件开发(续1)
  12. 一文解读Masked Autoencoder(MAE)
  13. python中除法带小数点_python 除法保留两位小数点的方法
  14. echarts 省市区联动地图
  15. python合并word_用Python实现Word多文档合并
  16. java 实现微信授权登陆
  17. C++STL accumulate函数
  18. 个人或企业网站建设备案不备案有区别?如何备案?
  19. css nth-child_比较CSS伪类:nth-​​child与nth-of-type
  20. 当你收到面试通知后,通过如下的准备可以大大提升面试成功率

热门文章

  1. 如何在Cordova Android 7.0.0 以下版本集成最新插件 极光插件为例
  2. LINQ教程二:LINQ操作语法
  3. 关于.NET编译的目标平台(AnyCPU,x86,x64) (转)
  4. el表达式判断字符串相等
  5. 【OpenCV学习】内存分配讨论两例
  6. Dapper基础知识一
  7. Java开发命名规范总结
  8. java下实现调用oracle的存储过程和函数
  9. hadoop 1.x升级至hadoop-2.2.0记录
  10. json格式的字符串转为json对象遇到特殊字符问题解决