前期准备

软件

  • VMware Fusion软件
  • UltralEdit或 Visual Studio Code或Sublime Text等文本编辑软件。
  • Windows镜像
  • Windbg等调试所需软件 ### 环境
  • 在虚拟机里面安装XP等Windows系统镜像。(安装教程不赘述)
  • 使用VMware的克隆功能 或 链接克隆功能 或 再次安装另一个Windows系统。
  • 在主虚拟机(用来调试另一台虚拟机)里面安装Windbg等调试所需软件。(本教程只需Windbg)

调试虚拟机

  1. 打开虚拟机,在虚拟机资源库里面找到被调试虚拟机,右键选择在Finder中显示,会出现.vmx配置文件。
    屏幕快照 2017-11-08 下午9.33.44

    • 如果打开后是一整个虚拟机文件,则右键-显示包内容就可以看到.vmx配置文件了。
  2. 右键VMX文件,打开方式选择UltralEdit等文本编辑软件。
    屏幕快照 2017-11-08 下午10.19.36

  3. 在里面找到checkpoint.vmState = ""这一行(也有可能不需要在此行)。在下面添加:

    serial0.present = "TRUE" 
    serial0.fileType = "pipe"
    serial0.yieldOnMsrRead = "TRUE" 
    serial0.startConnected = "TRUE" 
    serial0.fileName = "/Users/tora/Documents/Serial"
    
  4. 其中serial0.fileName = "/Users/tora/Documents/Serial"后面双引号里面的路径可以自己定义,这是定义用来存放串口之间通讯的文件的位置。

    • 要注意代码里面的双引号必须是英文标点,不然打开虚拟机会报错。
  5. 再次在虚拟机资源库里面找到主虚拟机,做相同的操作,不过添加的代码变成:

    serial1.present = "TRUE"
    serial1.yieldOnMsrRead = "TRUE"
    serial1.fileType = "pipe"
    serial1.fileName = "/Users/tora/Documents/Serial"
    serial1.pipe.endPoint = "client"
    
  6. 其中serial1.fileName = "/Users/tora/Documents/Serial"双引号里面的路径必须和被调试虚拟机一样

  7. 代码里面serial后面的数字,0 代表是COM1 ,1代表COM2 以此类推。因此,配置Windbg时,记得选择COM2口作为调试端口。

配置系统

  1. 启动被调试虚拟机,在选择系统处移动一下光标,不要回车,然后放着不动。
    屏幕快照 2017-11-08 下午9.57.47

    • 这一步很重要,必须被调试虚拟机要占用着pipe管道。
    • 这里可以看到虚拟机上方工具栏已经显示有串口了。
    • 屏幕快照 2017-11-08 下午9.49.18
  2. 启动主虚拟机,点击开始-我的电脑右键-管理
    屏幕快照 2017-11-08 下午9.50.14

  3. 打开计算机管理,点击左侧系统工具-设备管理器,右侧双击端口(COM和LPT),可以看到连接到虚拟机的串口号。演示里面是COM2。
    屏幕快照 2017-11-08 下午9.50.54

  4. 打开自行安装的Windbg,依次点击 File-Kernel Debug,在打开的COM选项卡里面,Baud Rate填写115200,在Port里面填写COM2,然后确定
    屏幕快照 2017-11-08 下午9.53.04

    屏幕快照 2017-11-08 下午9.53.26

  5. 再次确定,会出现一个控制台,显示Waiting to reconnect...
    屏幕快照 2017-11-08 下午9.54.17

  6. 选择被调试虚拟机,在上面的标签栏-虚拟机里面选择重启虚拟机
    屏幕快照 2017-11-08 下午10.10.58

  7. 在被调试虚拟机里面选择系统时,选择带有[启用调试程序]标签的系统。

  8. 可以看到,主虚拟机里面Windbg的控制台刷新出被调试虚拟机的内核信息。
    屏幕快照 2017-11-08 下午10.12.23

  9. 这种方式每次调试都要重启目标机,没有在windows上随时都可以用windbg连接目标机那么方便。

参考

MAC 系统下使用vmwarefusion 双虚拟机调试windows驱动

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐