WindbgPreview双机内核调试

文章目录

  • 通过管道连接
    • 虚拟机设置
    • 虚拟机系统配置
    • WinDbg Preview 设置
    • 附加成功示意图
    • 异常修复处理
      • 调试器反应慢 卡顿
      • 调试器看不到寄存器、局部变量、Watch
        • 添加一个新的启动加载器
  • 通过工具 VirtuakKD-3.0 连接
    • 修改调试器为新版WinDbg Preview
    • WMware15 与 VirtualKD 不兼容 解决方案
  • 设置符号路径
  • 这里插一个调试实用小技巧
  • 参考

新版WinDbg Preview是WinDbg的改进版本,具有更多现代视觉效果,更快的窗口,完整的脚本体验,内置支持可扩展的调试器数据模型。同时兼容WinDbg的所有命令,兼容x86与x64系统,更强大的时间旅行调试TTD。
下载: WinDbg Preview
新版WinDbg Preview配置双机内核调试有两种方法。

通过管道连接

虚拟机设置

删除不必要的设备,添加串行端口。
WindbgPreview双机内核调试_第1张图片

虚拟机系统配置

虚拟机中 WIN+R msconfig 打开系统配置
WindbgPreview双机内核调试_第2张图片
WindbgPreview双机内核调试_第3张图片

WinDbg Preview 设置

主机中 打开WinDbg Preview File Attach to kernel
WindbgPreview双机内核调试_第4张图片

附加成功示意图

WindbgPreview双机内核调试_第5张图片

异常修复处理

调试器反应慢 卡顿

COM 虚拟串口方式连接,调试器反应极其卡顿,可能由于虚拟机为复制的虚拟机,用iso文件创建新的虚拟机,即可解决该问题

调试器看不到寄存器、局部变量、Watch

如果遇到 WinDbg Preview 看不到寄存器、局部变量、Watch
虚拟机中 以管理员权限启动 cmd 添加一个新的启动加载器。

添加一个新的启动加载器

输入:

bcdedit

回车
WindbgPreview双机内核调试_第6张图片
设置端口1(该处的“1”,对应com接口1)

bcdedit /dbgsettings serial baudrate:115200 debugport:1

复制开机选项(这里我命名为:“Win10_Dbg”,可任意修改)

bcdedit /copy {current} /d Win10_Dbg

增加开机引导项(ID填写上一条命令生成的字符串)

bcdedit /displayorder {current} {ID}

激活debug(ID填写上上一条命令生成的字符串)

bcdedit /debug {ID} ON

重启虚拟机,选择“Win10_Dbg”为启动项

End

通过工具 VirtuakKD-3.0 连接

主机打开vmmon64.exe,设置Windbg路径(先使用旧版Windbg路径)

在Windows10中,WinDbg的目录是固定的,如下所示:

  • x86: C:\Program Files (x86)\Windows Kits\10\Debuggers\x86\WinDbg.exe

  • x64: C:\Program Files (x86)\Windows Kits\10\Debuggers\x64\WinDbg.exe

虚拟机需禁用驱动程序强制签名 这个网上有很多 就不一一赘述了

将 target文件夹拷贝到虚拟机 运行vminstall.exe(特别强调:只能装在虚拟机,勿在主机运行)

  • 默认设置 无需更改
  • 点击 Install
  • 重启 选择【调试模式启动】

正常的话,windbg会自动运行

修改调试器为新版WinDbg Preview

(DbgX.Shell.exe的路径) /k com:pipe,resets=0,reconnect,port=\.\pipe\(此处为虚拟机名)
WindbgPreview双机内核调试_第7张图片

WMware15 与 VirtualKD 不兼容 解决方案

我的另一篇博客,介绍了Win10+VirtualKD+WMware15 不兼容之解决方案

设置符号路径

// 以下命令告诉调试器使用符号服务器从https://msdl.microsoft.com/download/symbols
//的符号存储中获取符号并缓存符号c:\MyServerSymbols。
.sympath srv*c:\MyServerSymbols*https://msdl.microsoft.com/download/symbols

这里插一个调试实用小技巧

双机调试时
普通程序,入口点 main 加 MessageBox(0, 0, 0, 0);
驱动程序,入口点 DriverEntry 加 DbgBreakPoint();

参考

[1]: https://docs.microsoft.com/en-us/windows-hardware/drivers/debugger/debugging-using-windbg-preview
[2]: https://docs.microsoft.com/en-us/windows-hardware/drivers/debugger/symbol-path
[3]: https://blog.51cto.com/14317856/2410156
[4]: https://blog.csdn.net/m0_37921080/article/details/82495063
[5]: https://www.cnblogs.com/endenvor/p/8926688.html

你可能感兴趣的:(WindbgPreview双机内核调试)