zoukankan      html  css  js  c++  java
  • VirtualBox+Windbg 进行双机调试的方法

      以前见他们调试驱动程序之类的都是使用的VMWare, 我没怎么用这软件, 感觉这软件有点臃肿, 后台服务挂得太多了, 感觉不爽, 于是就没搞它.
    加上电脑上很早就装有Oracle的Virtual Box, 于是就看了下, 其实Virtual Box也有支持串口设备, 按理说也可以用Windbg进行连接的. 一直觉得Virtual Box挺好用的.
    既然写了这篇博客, 那就证明我确实已经成功地进行调试了.
      下面说下步骤吧(已经完成的就忽略吧):
      (如果图片显示不完整, 请在右键菜单中查看该图片)

    1.安装Virtual Box虚拟机
      官方网址:https://www.virtualbox.org/
      在左边找到Downloads标签, 选择合适自己平台的安装包就行了(可比VMWare小多了).
      这软件自带中文语言包, 且说是开源+免费软件, 所以不要到其它地方去找什么破解, 绿色之类, 搞得不好反倒弄一身的XX.

    2.安装虚拟机操作系统
      对于VBox安装虚拟机操作系统, 百度一下, 太多了...百度吧.
      我安装的操作系统是XP_SP3, 新手嘛, 还是从"低级"的东西慢慢学起.

    3.对虚拟机中的操作系统进行额外的设置
      常规的设置,比如内存大小, 显存大小等, 请酌情分配就行.
      3.1 对串口的支持设置(需要在关机的条件下设置)

      注意管道的命名规则, 否则会创建失败.



      3.2 在虚拟机和实机之间共享文件
        第一种办法(目录共享):





      第二种办法(简单方便, 但貌似会使电脑出现拖放问题):




      3.3 修改操作系统配置文件以启动调试模式
      在虚拟机中, 找到 C:\Windows\boot.ini(隐藏,只读),在最后加上一行:
    multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional" /noexecute=optin /fastdetect /debug /debugport=com1 /baudrate=115200
    /debugport=com1就是上面创建的管道的命名后面的部分:\\.\pipe\com1,/baudrate=115200表示设置波特率(这个可以大点,速度快些,但不能随便乱设置)
    /debug 表示启用调试
      修改后大概是这样的:
    [boot loader]
    timeout=5
    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

      重启虚拟机,  选择第2项启动菜单进入调试模式:



    4. 配置Windbg进行调试
      4.1 下载符号文件(如果没有)
        1) 到http://msdn.microsoft.com搜索下载
        2)到http://msdn.microsoft.com/en-us/windows/hardware/gg463028.aspx
        我下载的是Windows XP with Service Pack 3 x86 checked symbols, all languages (File size: 202 MB)
        自己按需下载吧.
      4.2 新建一批处理脚本文件(双机调试.bat)
      内容如下:

    @echo off
    ::调试Windbg的路径(有空格请加上双引号)
    set Windbg="I:\Dynamic Debug\WinDbg v6.11.0001.404 X86\windbg_EN.exe"
    ::设置命令行参数
    ::其中com:port=\\.\pipe\com1是上面创建的管道. 波特率设置要一致
    ::-y H:\Cache\symbols表示调试符号文件的路径
    set Param=-b -k com:port=\\.\pipe\com1,baud=115200,pipe -y H:\Cache\symbols
    ::打开调试
    start "" %Windbg% %Param%
    goto :eof

    附图:


    保存后, 直接双击打开该bat脚本文件即可打开WinDbg并调试虚拟机(先要打开虚拟机并进入调试模式)


      一开始虚拟机可能处理未响应状态(被调试), 按照上面的说明, 在下面的命令行中执行命令g即可继续.
    之后通过共享文件的方式, 加载相应的驱动/程序, 通过手动下断点的方式进入调试:
      在驱动中手动加入断点:
      #if DBG
        __asm int 3
      #endif

    即可使虚拟机挂起到调试状态了.

    女孩不哭(QQ:191035066)@2013-01-02 10:34:47 http://www.cnblogs.com/nbsofer


  • 相关阅读:
    linux系统cpu和内存占用率
    虚拟机网卡设置
    C语言中打印返回值
    MQTT_DEMO
    MQTT-C-UDP_PUB
    MQTT-C-PUB
    结构体指针用法
    linux系统如何操作隐藏文件
    mqtt学习笔记
    XML文件的读取----cElementTree
  • 原文地址:https://www.cnblogs.com/memset/p/2841513.html
Copyright © 2011-2022 走看看