专栏首页Eureka伽罗的技术时光轴win10中“windbg+vmware+win7双机调试”设置

win10中“windbg+vmware+win7双机调试”设置

本文主要介绍在win10下如何设置windbg+vmware,以进行双机调试。本文主要参考:李Sir的博客,并浏览了大量网文,以及windbg自带的help文档和MSDN,除了综合各家的经验外,也分享了本人在实践遇到的问题和解决办法。

一、安装环境

1,主机(Host OS): win10 X64

2,Windbg:10.0.10586.567 ADM64(本人安装的是wdk10+VS2015)

3,VMWare:11.0.0

4,Guest OS:win7 X64

二、虚拟机配置

1,打开相应的虚拟机,选择“编辑虚拟机设置”,打开虚拟机设置对话框,如下

2,观察“虚拟机设置”这个对话框的“硬件”->“设备栏”,看看是否有“打印机”或“Printer”,如果有,则删除该设备。

3,选择“添加”,然后选择“串行端口”,然后选择“使用命名管道”,并按如下设置

注:

1)使用命名管道,名字默认即可。

2)另一端选应用程序,即链接windbg。

3)IO模式,可选可不选。

4)完成后,需要确认一下新增的设备是“com1”(如果是中文界面,显示“串行端口”)。为对比,非com1时,显示“串行端口2”。

如果在这个地方,COM口编号不对,后续打开windbg,会显示“debuggee not connected”。附网上关于该问题的解决方案:

“- -我也遇到了这个问题,刚解决。 你在Edit virtual machine settings里看下你那个串口是不是叫Serial port 2,如果是,问题就在这里,就是多了那个2。你把这个串口删掉,然后把那个printer也删掉,然后重新添加一个串口就可以了,这个时候串口就叫Serial port了。”

三、Windbg的设置

1,在桌面上添加一个windbg的快捷方式;

2,右键该快捷方式,打开“属性”对话框,在目标一栏的末尾添加“ -b -k com:pipe,port=\\.\pipe\com_1,resets=0”。

注:李sir的博客就是这么设置的,但我通过这种方法去打开windbg(右键“管理员方式打开”),一直是“Debuggee not connected”。偶然尝试了下,如下设置,解决了这个问题:

3,在“快捷方式”tab中,选择“高级”,勾选“用管理员身份运行”。

四、GeustOS设置(该部分完全同“李sir的博客”)

1,以管理身份打开“cmd”。

2,输入“bcdedit”

3,设置端口1,命令如下:

[cpp] view plain copy

  1. bcdedit /dbgsettings serial baudrate:115200 debugport:1

该处的“1”,对应com口1。

4,复制一个开机选项,命名为“DebugEntry”,可任意命名。命令如下:

[cpp] view plain copy

  1. bcdedit /copy {current} /d DebugEntry

5,增加一个开机引导项

[cpp] view plain copy

  1. bcdedit /displayorder {current} {ID}

注:这个ID要填写上一条命令生成的一串数字或字母。

6,激活debug

[cpp] view plain copy

  1. bcdedit /debug {ID} ON

注:ID以生成的数字或字母串代替。

7,重启虚拟机,选择“DebugEntry[debug]”作为启动项。

8,选择好启动项后,立即回到主机,启动windbg。只有在GuestOS启动过程中,才能连接上。

cmd 敲入 g 继续执行,或使用菜单继续会自动敲入 g

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • C++使用初始化列表的方式来初始化字段

    明白了上述用法以后,Android Recovery源代码里面也有类似的案例。下面这个是Recovery的一个构造函数,代码位于:screen_ui.cpp...

    morixinguan
  • 解决cpp添加QObject派生类的问题

    Qt君
  • 发布QtCsv文件转语言翻译文件工具

    Qt君
  • C#迭代器与LINQ查询操作符

    (1)使用 针对集合类型编写foreach代码块,都是在使用迭代器 集合类型实现了IEnumerable接口 都有一个GetEnumerator方法 (...

    祝你万事顺利
  • Fiddler的深入应用

    以上这些操作都需要针对该功能的明文请求进行操作,但客户端发出来的加密请求,我们无法解密,阻碍了测试进行,怎么办呢?

    用户5521279
  • 曾是最流行的语言之一,Visual Basic 28年兴衰记

    这是一篇暴露年龄的文章。为什么这么说?因为现在年轻的程序员可能没有接触过当年红极一时的 Visual Basic。28 年前的 1991 年 4 月,Micro...

    用户5807183
  • 细说 Java hashCode

    写过 Java 程序的同学一定都知道 hashCode 方法,它是 Object 对象的一个 native 方法。无论是我们平常使用的 HashMap 还是重写...

    黄泽杰
  • 适合程序嵌入的pdf控件了解

    如果开发一个软件,需要用到PDF功能,您的选择是基于Adobe PDF吗? 如果是基于Adobe PDF,需要用户安装一个几十M的Adobe的安装包,这显然是不...

    点量小崔
  • C#语法糖

    计算机语言中添加某种语法,这种语法对语言的功能没有影响,但是方便程序员使用。使用语法糖增加代码的可读性,减少程序代码出错的机会。 一.自动属性 以前:手写私...

    祝你万事顺利
  • VC++DLL动态链接库程序

    最近查找了一下VC++中关于编写DLL动态库的资料,主要是导出函数和导出类的编写。因为在实际项目开发中有时需要使用C++编写好DLL接口,控制设备,提供给其他语...

    ccf19881030

扫码关注云+社区

领取腾讯云代金券