windbg 搭建双机调试环境

news/2024/9/20 7:02:25/文章来源:https://www.cnblogs.com/lostin9772/p/18355560

当我们搭建好驱动开发环境后,就可以设置双机调试了,虚拟机的安装可以参考网上其他教程,比较简单,我们直接来讲设置双击调试需要注意的一些地方。

1.设置被调试的虚拟机

首先,将虚拟机关机,如果此时已经有了串行端口存在首先移除,管道名字输入 \\.\pipe\com_1,并选择“该端是服务器”、“另一端是应用程序”:

然后 win + R 打开命令行,输入 msconfig ,做如下设置先不重启:

2.设置 windbg 的快捷连接方式

由于我们之前安装 SDK 和 WDK 的时候,会默认给我们安装 windbg 经典版,若没有安装的话,也可以自己去网上找 windbg 的安装包安装一下即可,我的 windbg 安装路径是 F:\Windows Kits\10\Debuggers\x64\windbg.exe,我们需要给 windbg 提供启动参数,让它能够应该和哪个管道进行连接。我们为 windbg 创建一个快捷方式,并右键快捷方式选择属性,在快捷方式选项卡下将目标设置为:

"F:\\Windows Kits\\10\\Debuggers\\x64\windbg.exe" -b -k com:pipe,port=\\\\.\\pipe\\com_1,resets=0,reconnect -y

设置完成后,我们就可以直接通过点击这个快捷方式连接到虚拟机。

3.禁用驱动签名、打开测试模式和复制 Boot 菜单

最后我们需要禁用驱动签名、打开系统测试模式和复制 Boot 菜单并重启。由于在开发的过程中,我们测试自己写好的驱动是没有进行签名的,无法在正常的系统上运行,所以我们需要禁用驱动签名和打开系统的测试模式,复制 Boot 菜单是为了在每次系统启动的时候我们可以选择进入正常的系统或者进入我们配置好的调试系统,只需要在虚拟机上运行以下批处理命令即可:

bcdedit /set nointegritychecks on
bcdedit /set testsigning on
bcdedit /copy {current} /d "win10 x64 debug for windbg"
shutdown -s -t 1000

不禁用驱动签名在加载驱动的时候就会出现如下情况:

然后在系统重启的时候,我们选择我们复制出来的引导项,也就是第二个,然后再次重启进入系统的时候,我们点击创建的 windbg 快捷方式进行连接。

4.设置符号表和调试信息输出

在 windbg 已经成功连接被调试机的时候,可以打开主菜单 File,然后选择 Symbol File Path 来设置符号表的位置,设置如下:

srv*D:\symbs*http://msdl.microsoft.com/download/symbols;D:\work\myp
roject\build\output\x64\Debug 

这个设置的前半部分从微软的网址下载符号表,并保存到 D:\symbs 目录下。而后半部分是工程的调试版本的编译输出目录,可以按照自己的真实路径来调整。

一般来说,在调试的时候,只要你按下了 Ctrl 加 Break 键中断了被调试机,然后输入如下命令:

.reload

回车后,符号表就会开始加载或者下载。符号表无法下载的时候,必须把 Symbal path 设置中关于微软的部分全部删除。否则每次调试的时候都会尝试从微软下载符号表,每次都会卡很长时间。当然我们尽量要下载符号表,在调试内核的时候会给我们很大的帮助,比如没有下载符号表则无法使用 dt 命令来查询 EPROCESS 这个内核结构体。

此时,在我们调试的时候,可能会发现,当我们在驱动程序中编写了打印调试信息的语句,但是 windbg 却不显示调试信息,原因是因为我们没有设置合适的调试信息输出等级,我们只要在 windbg 命令行中输入以下命令运行即可:

//不区分大小写,用于打开Windows驱动或者内核调试筛选器
ed kd_default_mask 0xffffffff 

5.设置 windbg 的工作窗口

我们可以根据自己的习惯设置 windbg 的工作窗口,在菜单栏中 View 中开启相应的窗口并调整位置,并在 File 中保存工作区,如下:

6.做好快照

最后,我们必须要对设置好的调试环境做一个快照,因为 windows 每次启动非常耗时。但更要命的是每次启动之后,Windows 的内存布局是不同的。通过快照,一方面我们每次可以直接恢复快照进行迅速连接,另一方面当我们的调试系统出现环境异常或者崩溃的时候,我们也可以恢复最初始的环境,毕竟在调试内核的过程中,蓝屏是家常便饭。

不过值得一提的是,这里有两个地方需要注意:

  • 在我们每次进行快照之前,我们先中断调试系统,然后再进行快照,下次恢复快照的时候,使用 windbg 快捷方式就可以直接连接上(否则大概率会出现无法直接连上的情况,我估计是因为当我们中断调试系统的时候,会对系统环境进行保存,而若在没有中断系统的情况下进行保存,下次再恢复快照的时候无法直接连上,需要每次点 windbg 的 “Break”(中断) 命令才行)。
  • 每当我们的 windbg 连接不上时,而被调试的系统也在正常运行着,这时候点一下 WinDbg 的“Break”(中断)命令一般就能够连接上了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/781922.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

windbg 搭建双击调试环境

当我们搭建好驱动开发环境后,就可以设置双机调试了,虚拟机的安装可以参考网上其他教程,比较简单,我们直接来讲设置双击调试需要注意的一些地方。 1.设置被调试的虚拟机 首先,将虚拟机关机,如果此时已经有了串行端口存在首先移除,管道名字输入 \\.\pipe\com_1,并选择“该…

NDT算法详解与C++实现

点云匹配在感知环节是一个很重要的信息获取手段,而其中的算法也有几个比较经典了,例如ICP(Iterative Closest Point,迭代最近点)算法,而本文决定记录学习的是NDT算法,也就是Normal Distribution Transform,正态分布变换算法。什么是正态分布变换算法呢,简言之,就是把…

HBase学习的第一天--hbase的简介和搭建

HBase架构与基础命令 一、了解HBase 1.1 HBase概述HBase是基于Hadoop中HDFS做存储的数据库HBase 是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,用于存储海量的结构化或者半结构化,非结构化的数据(底层是字节数组做存储的) HBase是Hadoop的生态系统之一,是建立…

实景三维:解锁地理信息新维度,引领未来城市智慧之钥

在这个信息爆炸与科技日新月异的时代,地理信息与遥感技术正以前所未有的速度改变我们认知世界的方式。在推动“实景三维平台”这一前沿科技的构建上,它不仅是地理信息的立体呈现,更是智慧城市的基石,打开了通往未来城市规划、管理、决策与服务的新视界。实景三维平台:数字…

【Linux系列】内核参数

sysctl命令常用参数 RAID性能参数调优 网络协议栈调整:单位是字节 TCP并发性能优化 对于用不上IPV6的建议直接禁用 TCP keepalive时长控制 memory OOM控制 安全防护模块 保障TCP通信质量 IO密集性服务器优化参数 路由器选项控制 路由机制控制 内存大页面使用策略内核参数主要保…

外心与垂心

外心(这三条结论并不完全是平凡的) 1、 \(\angle BOC=2\angle A\) 2、 \(\angle CBO+\angle A=Rt \angle\) 3、 \(O\) 在三角形三边的中垂线上 例1如图,\(\triangle ABC\) 内接于圆 \(O\) ,\(AD\perp BC\) ,延长 \(CD,BD\) 交圆 \(O\) 于点 \(F,E\) ,作 \(DE,DF\) 中垂线…

计算机体系结构技术杂谈(上)

计算机体系结构技术杂谈(上) 2.1 计算机的层次结构 2.1.1基本概念介绍 1. 计算机基本概念 1) 机器数:用0和1编码的计算机内部的0/1序列。 2) 真值:机器数真正的值,即:现实中带正负号的数(通常指带符号二进制数对应的真正的数值)。 3) 定点数:将一个实数表示为带有固…

驱动开发环境搭建

1.安装 VS2019 首先,我们需要安装 VS2019,资源链接如下: VS2019 + WDK: https://pan.baidu.com/s/1LYIn1MXLjY_zgEgLr8SgYA?pwd=xyji 在安装的时候我们需要注意务必要注意,图上已勾选的选项必须要全部勾选,漏勾可能会导致各种奇怪的问题! 可选部分我们需要勾选的安装项如…

Jetbrains Fleet: 很好, 但是谁在乎呢?

作者对Jetbrains Fleet项目的发展历程进行了回顾和批评,认为其缺乏IDE的第一性以及Jetbrains工程便利。虽然现在支持自定义插件,但插件开发难度大且资源不足,面临Vscode等竞争对手的压力,Jetbrains Idea也停滞不前,新UI等更新未能带来实质性改进。作者表示不再购买Jetbrai…

pritunl安装及配置https证书

1、pritunl 简介#官方网站 https://pritunl.com/ ​ #官方文档 https://docs.pritunl.com/docs ​ #Github项目地址 https://github.com/pritunl/pritunl ​ #客户端下载地址(也可以使用OpenVPN作为客户端) https://client.pritunl.com/#install https://openvpn.net/client …

ClueCon 2024:音视频开发者的技术盛会

前面的话:ClueCon 是音视频开发者的年度技术盛会,每年都在美国芝加哥举行。RTE 开发者社区的联合主理人杜金房在即将踏上 ClueCon 之际,写下了这段文字。也邀请大家一同关注这次大会。时间过得真快,转眼,又是一届新的 ClueCon 了。ClueCon 是一个音视频开发者的年度技术盛…

fomepay虚拟信用卡跑路了?可以看看其他平台

最近fomepay虚拟卡平台跑路了,很多人的余额都无法提现!基本就是充值进去的钱被吞了,以前能够联系到的客服现在联系不到了,贴吧上面一搜,全部都是被骗的说法; 博主体验,以前我就在wildcard平台和fomepay两个平台之间来回跑,给我的感觉就是fomepay这个平台很像那种钓鱼网…