windbg+VM 设置内核调试环境(双机调试)
虚拟机是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 设置内核调试环境(双机调试)相关推荐
- Windbg双机调试环境配置(Windows7/Windows XP+VirtualBox/VMware+WDK7600)
简介:Windbg双机调试内核.驱动 下载软件: 下载Windbg(GRMWDK_EN_7600_1.ISO) 下载VirtualBox 5.2/VMware 12 一.安装WDK,这里要提一点的是D ...
- 【旧文章搬运】Windbg+Vmware驱动调试入门(一)---Windbg的设置
原文发表于百度空间,2009-01-08 ========================================================================== Wind ...
- 线程简介和MySQL调试环境搭建
导读: 本文节选自八怪专栏<深入理解MySQL主从原理32讲>第29节 想内容请点击订阅专栏 注意:如果正文有图片不清晰可以将图片保存到本地查看(本文建议横屏观看效果更佳) 最后我想简单说 ...
- X86汇编调试环境搭建
最近毕设需要做一个基于X86的微型OS内核,一直在学习汇编,前来记录一下 汇编环境搭建 本次使用vscode搭建的,需要的插件有X86 and X86_64 Assembly(也可以使用masm插件) ...
- 无人驾驶小车调试笔记(一)-- 调试环境部署
硬件简介:硬件是NVIDA Jetson Nano为主控的差速控制小车,主要由主控板.转接板.两个电机(动力来源).高清摄像头.tof传感器.imu传感器.前后各两组车灯,顶部开关按钮.显示屏以及万向 ...
- 什么是调试?怎么调试?
文章目录 调试 一.什么是BUG? 二.调试 什么是调试? 调试的基本步骤 如何发现bug的存在? Debug和Release 优化 三.常见错误 编译型错误 链接型错误 运行时错误 四.Visual ...
- 双机调试环境搭建 windbg + virtualkd
双机调试环境搭建 1. 环境准备 2. 单独的windbg双机配置 2.1 设置GuestOS环境 2.2 设置HostOS环境 2.3 Windbg测试 3. 使用Virtualkd/Virtual ...
- 使用 VMware + win10 + vs2019 从零搭建双机内核调试环境
我在前面的文章--<使用 VMware + win10 + VirtualKD + windbg 从零搭建双机内核调试环境>分享了使用 windbg 进行双机内核调试的环境搭建的步骤. 有 ...
- Windows 内核之双机调试与windbg命令大全
在今后会有相当的实验环节,对于windows内核实验,调试环境是必不可少的,本章讲解双机调试的环境搭建与常见的WINDBG指令. 准备材料: VMware workstation : [https:/ ...
最新文章
- c语言重定义不同的基类型_简述usb连接器输出类型定义和不同环境下的用法
- 【Python】向函数传递列表
- MySQL数据库:编码
- 看门狗(Watch Dog)是嵌入式系统中一种常用的保证系统可靠性的技术,()会产生看门狗中断。【详细!小白也能看懂!】
- js for in 遍历对象与数组
- jsp是在html里面嵌入哪种代码?_再说嵌入式入门
- 自定义可扩展叠加头部的下拉控件
- Dynamips使用说明
- 机器人操作系统ROS是什么?
- IP地址与DNS的作用,什么是IP地址与DNS【详细】
- 网页数据提取----网络投票软件开发(续1)
- 一文解读Masked Autoencoder(MAE)
- python中除法带小数点_python 除法保留两位小数点的方法
- echarts 省市区联动地图
- python合并word_用Python实现Word多文档合并
- java 实现微信授权登陆
- C++STL accumulate函数
- 个人或企业网站建设备案不备案有区别?如何备案?
- css nth-child_比较CSS伪类:nth-​​child与nth-of-type
- 当你收到面试通知后,通过如下的准备可以大大提升面试成功率
热门文章
- 如何在Cordova Android 7.0.0 以下版本集成最新插件 极光插件为例
- LINQ教程二:LINQ操作语法
- 关于.NET编译的目标平台(AnyCPU,x86,x64) (转)
- el表达式判断字符串相等
- 【OpenCV学习】内存分配讨论两例
- Dapper基础知识一
- Java开发命名规范总结
- java下实现调用oracle的存储过程和函数
- hadoop 1.x升级至hadoop-2.2.0记录
- json格式的字符串转为json对象遇到特殊字符问题解决