WinDbg配置远程调试
WinDbg配置远程调试
1、为什么需要远程调试
某些特殊的场合需要远程调试,如:
①调试特殊的程序,比如在调试全屏程序,内核。
②需要别人帮助调试或者帮助别人调试。比如由于商业性质不能直接给你pdb和源代码。
③还有一类就是在指定的机器上复现,此时dump也不好使。(下一篇文章我会介绍)
2、支持的远程协议有哪些?
从微软的官方文档来看,协议很丰富。有TCP,PIPE,SSL,COM,1394。其中最古老的要属1394,至今某些台式机器仍然保留这一接口。
3、介绍tcp协议方式
在这篇文章,我主要介绍tcp的方式。
注意:在配置远程调试,须保持两端的WinDbg版本一致。
我们先介绍下模式,既是远程调试,那就分为server端和client端。
举个例子:我现在有个疑难杂症搞不定,需要同事帮忙解决。我需要开启WinDbg的server模式,那我就是server端。同事连接进来就是client端。
有两种方式启动远程调试。这两种方式各一点差异,一个需要懂点WinDbg知识,一个就是类似小白模式。
3.1 小白模式
在安装WinDbg的目录中找到DbgSvr程序。
比如我这里:

注意看这里有很多的dbgsrv.exe,你该选择哪个呢?这是有讲究的。
如果你是要调试x86程序,那就选择上面红框中的dbgsrv.exe。如果是调试x64程序,那就需要选择amd64目录下的程序。
我曾经在这里吃过亏,一调试就报如下的错误。

以管理员的权限打开cmd,进入此目录,如果不想每次这么麻烦就可以把此路径加入环境变量path中。下次开机就可以生效。

可以输入dbgsrv.exe /?,查看dbgsrv的简单使用方式。
在输入dbgsrv.exe -t tcp:port=18888,要是没有任何的错误表示成功,等待client端连接。

在client端打开WinDbg,菜单栏中选择File打开,出现如下画面:
按照上面的格式输入tcp:server:192.178.2.10, port=18888,这里其实还加上密码参数更为安全,最后点击OK

如果连接没有问题就会出现如下的画面,我们在server端再起一个notepad进程。


3.2 入门模式
比如我现在正在调试notepad.exe,在server端的WinDbg命令行输入.server tcp:port=18888,password=abcc
0:009> .server tcp:port=18888, password=abcc
Server started. Client can connect with any of these command lines
0: <debugger> -remote npipe:Pipe=DbgX_10353c0f6e1d413fb8a6a0f047ef46eb,Password=*,Server=192.168.2.10
1: <debugger> -remote tcp:Port=18888,Server=192.168.2.10
在client端,打开WinDbg,输入tcp:server=192.178.2.10,port=18888, password=abcc,这里需要把ip地址换成你自己的。

成功之后在client端显示的画面:
0:009> .server tcp:port=18888, password=abcc
Server started. Client can connect with any of these command lines
0: <debugger> -remote npipe:Pipe=DbgX_10353c0f6e1d413fb8a6a0f047ef46eb,Password=*,Server=192.168.2.10
1: <debugger> -remote tcp:Port=18888,Server=SIH-D-697.cn.net.ntes
192.168.2.10 (tcp [::ffff:192.168.2.10]:51941) connected at Mon Aug 5 20:01:37 2024
server端显示的画面:
0:009> .server tcp:port=18888, password=abcc
Server started. Client can connect with any of these command lines
0: <debugger> -remote npipe:Pipe=DbgX_10353c0f6e1d413fb8a6a0f047ef46eb,Password=*,Server=192.168.2.10
1: <debugger> -remote tcp:Port=18888,Server=SIH-D-697.cn.net.ntes
192.168.2.10 (tcp [::ffff:192.168.2.10]:51941) connected at Mon Aug 5 20:01:37 2024
之后你在client输入的命令就会同步到server端的WinDbg。
此时可以在client端的WinDbg输入k:
0:009> k# Child-SP RetAddr Call Site
00 000000f9`fb1ffd38 00007fff`9e07cafe ntdll!DbgBreakPoint
01 000000f9`fb1ffd40 00007fff`9d127374 ntdll!DbgUiRemoteBreakin+0x4e
02 000000f9`fb1ffd70 00007fff`9dffcc91 KERNEL32!BaseThreadInitThunk+0x14
03 000000f9`fb1ffda0 00000000`00000000 ntdll!RtlUserThreadStart+0x21
相关文章:
WinDbg配置远程调试
WinDbg配置远程调试 1、为什么需要远程调试 某些特殊的场合需要远程调试,如: ①调试特殊的程序,比如在调试全屏程序,内核。 ②需要别人帮助调试或者帮助别人调试。比如由于商业性质不能直接给你pdb和源代码。 ③还有一类就是…...
spl注入实战thinkphp
目录 一、环境的部署 二、本地创建数据库 三、填写数据库连接文件 四、编写控制器 五、访问分析 debug报错会显示物理路径 原因是config.php文件相关配置 六、注入分析 七、进入断点调试 八、通过mysql执行语句查看结果 九、总结: 一、环境的部署 二、本地…...
整理深度学习时最常用的Linux命令(自用)
清华大学镜像源: https://pypi.tuna.tsinghua.edu.cn/simple/tar文件解压 tar -xzvf xxx.tar.gztar xvf xxx.tarzip文件解压 unzip xxx.zip -d path/to/your/fold清理GPU异常内存占用 杀掉 1 号显卡的所有进程 fuser -v /dev/nvidia1 | xargs -t -n 1 kill -9杀掉…...
LVS——>linux 虚拟服务器知识汇总
一、概念: LVS(Linux Virtual Server),是Linux Virtual Server的简写,也就是Linux 虚拟服务器,是一个虚拟的服务器集群系统负载均衡解决方案,它将一个真实服务器集群虚拟成一台服务器来对外提供…...
AI赋能周界安防:智能视频分析技术构建无懈可击的安全防线
周界安全防范是保护机场、电站、油库、监狱、工业园区等关键设施免受非法入侵和破坏的重要措施。传统的周界安防手段主要依靠人员巡查和物理屏障,但这种方式不仅人力成本高,而且效率较低,难以满足日益复杂多变的安全需求。随着AI技术的引入&a…...
FastAPI+Vue3工程项目管理系统项目实战私教课 上课笔记20240808 课程和学习计划制定
学习目标 将Word和Excel做的东西放到数据库里面去工程类公司,甲方,劳务存到数据库存储的信息主要是人员的信息 基本信息: 人员信息,资料库,甲方的人出现在哪些项目上,考勤材料信息,进货记录&…...
Robot Operating System——发布相对湿度数据
大纲 应用场景定义字段解释 案例 sensor_msgs::msg::RelativeHumidity 是 ROS (Robot Operating System) 中的一个消息类型,用于表示相对湿度数据。 应用场景 环境监测 气象站:在气象站中,相对湿度传感器可以用于监测环境湿度,帮…...
一文搞懂后端面试之不停机数据迁移【中间件 | 数据库 | MySQL | 数据一致性】
数据迁移方面的工作: 重构老系统:使用新的表结构来存储数据单库拆分分库分表、分库分表扩容大表修改表结构定义 数据备份工具 MySQL上常用的两款数据备份工具:mysqldump和XtraBackup mysqldump:一个用于备份和恢复数据库的命令…...
【ESP01开发实例】- ISD1820录音控制
ISD1820录音控制 文章目录 ISD1820录音控制1、ISD1820模块介绍2、硬件准备及接线3、代码以实现录音技术已经取得了长足的进步,它已成为从语音助手到安全系统的各种应用不可或缺的一部分。如果您有兴趣构建自己的录音系统,将 ISD1820 模块与 ESP01 微控制器相结合可能是一个不…...
Linux驱动面试高频考点后面继续改整理
Linux驱动开发是将硬件设备与操作系统内核连接起来的重要环节,它涉及到设备模型、中断处理、文件操作等方面,是一项挑战性且充满乐趣的工作。今天给大家分享45道Linux驱动面试高频考点,直接上干货。 1、驱动程序分为几类? 内核驱动…...
【Python】nn.ConvTranspose1、2、3d()函数详解和示例
前言 在深度学习中,特别是在处理图像、音频和三维数据时,转置卷积(Transposed Convolution)或称为反卷积(Deconvolution)是一种非常重要的操作。PyTorch提供了nn.ConvTranspose1d、nn.ConvTranspose2d和nn…...
vtkConnectivityFilter提取连通区域中的问题
直接使用vtkConnectivityFilter提取连通区域,渲染上没问题,但是打印出polydata中的点数,发现跟原始数据是一致的。 for (int i 0; i < numRegions; i){vtkSmartPointer<vtkConnectivityFilter> connectivityFilter vtkSmartPointe…...
购物系统小程序的设计
管理员账户功能包括:系统首页,个人中心,商品分类管理,商品信息管理,特价商品管理,用户管理,留言板管理,订单管理,系统管理 微信端账号功能包括:系统首页&…...
做报表用什么工具?不想再用Excel了!!!
一、什么是中国式报表? 不知道大家现在还是使用Excel来制作报表,然后跟领导汇报工作吗?虽然Excel功能很强大,但是用Excel做过中国式报表的小伙伴一定知道它的制作过程有多复杂。 中国式报表可以用一句话简单概括:格式…...
c++实现学生管理系统(附源码)
目录 一、基本功能: 二、包含的模块: 三、系统介绍 1. 学生管理系统的功能: 2. 具体的需求: 3. 支持的标准: 四、系统结构功能图: 五、系统设计 1. 退出系统: 2. 增加学生:…...
JS防抖是什么?干嘛用的?
你好同学,我是沐爸,欢迎点赞、收藏和关注!个人知乎 防抖在前端开发中可以说经常用到,有诸多使用场景。接下来我们一起看下防抖的定义、防抖函数的实现、应用场景、lodash防抖函数以及防抖在框架中的使用。Let’s go 一、什么是防…...
Linux磁盘管理与文件系统(二):实用工具和命令、fdisk分区示例
文章目录 4、查看或管理磁盘分区-fdisk格式选项示例 4、示例:使用 fdisk 命令创建分区需求操作步骤 5、创建文件系统-mkfs格式常用选项示例创建其他类型的文件系统 6、创建文件系统-mkswap格式常用选项示例拓展:关闭和启用交换分区拓展:swap分…...
使用vtkRenderer创建的显示点云的窗口如何刷新(QT/C++)
一、使用vtkRenderer创建点云显示窗口,参考 在Qt创建的UI中放一个显示点云的窗口(PCLQT5)_pcl点云和qt-CSDN博客 二、刷新vtkRenderer创建的窗口 使用场景:在某些情况下代码中需要对显示窗口的显示物改动,例如通过滑…...
Mysql绕过小技巧
上源码。 <?php $mysqli new mysqli("localhost", "root", "root", "security");/* check connection */ if ($mysqli->connect_errno) {printf("Connect failed: %s\n", $mysqli->connect_error);exit(); }$my…...
气象大数据案例项目(求各气象站的平均气温)
气象大数据案例项目(求各气象站的平均气温) 一、项目需求二、数据格式三、项目开发3.1 在windows 进行开发3.2 运行结果3.3 对项目打包 一、项目需求 现在有一份来自美国国家海洋和大气管理局的数据集,里面包含近30年每个气象站、每小时的天…...
rknn优化教程(二)
文章目录 1. 前述2. 三方库的封装2.1 xrepo中的库2.2 xrepo之外的库2.2.1 opencv2.2.2 rknnrt2.2.3 spdlog 3. rknn_engine库 1. 前述 OK,开始写第二篇的内容了。这篇博客主要能写一下: 如何给一些三方库按照xmake方式进行封装,供调用如何按…...
3.3.1_1 检错编码(奇偶校验码)
从这节课开始,我们会探讨数据链路层的差错控制功能,差错控制功能的主要目标是要发现并且解决一个帧内部的位错误,我们需要使用特殊的编码技术去发现帧内部的位错误,当我们发现位错误之后,通常来说有两种解决方案。第一…...
什么是库存周转?如何用进销存系统提高库存周转率?
你可能听说过这样一句话: “利润不是赚出来的,是管出来的。” 尤其是在制造业、批发零售、电商这类“货堆成山”的行业,很多企业看着销售不错,账上却没钱、利润也不见了,一翻库存才发现: 一堆卖不动的旧货…...
SpringBoot+uniapp 的 Champion 俱乐部微信小程序设计与实现,论文初版实现
摘要 本论文旨在设计并实现基于 SpringBoot 和 uniapp 的 Champion 俱乐部微信小程序,以满足俱乐部线上活动推广、会员管理、社交互动等需求。通过 SpringBoot 搭建后端服务,提供稳定高效的数据处理与业务逻辑支持;利用 uniapp 实现跨平台前…...
Android第十三次面试总结(四大 组件基础)
Activity生命周期和四大启动模式详解 一、Activity 生命周期 Activity 的生命周期由一系列回调方法组成,用于管理其创建、可见性、焦点和销毁过程。以下是核心方法及其调用时机: onCreate() 调用时机:Activity 首次创建时调用。…...
用机器学习破解新能源领域的“弃风”难题
音乐发烧友深有体会,玩音乐的本质就是玩电网。火电声音偏暖,水电偏冷,风电偏空旷。至于太阳能发的电,则略显朦胧和单薄。 不知你是否有感觉,近两年家里的音响声音越来越冷,听起来越来越单薄? —…...
C# 表达式和运算符(求值顺序)
求值顺序 表达式可以由许多嵌套的子表达式构成。子表达式的求值顺序可以使表达式的最终值发生 变化。 例如,已知表达式3*52,依照子表达式的求值顺序,有两种可能的结果,如图9-3所示。 如果乘法先执行,结果是17。如果5…...
Caliper 配置文件解析:fisco-bcos.json
config.yaml 文件 config.yaml 是 Caliper 的主配置文件,通常包含以下内容: test:name: fisco-bcos-test # 测试名称description: Performance test of FISCO-BCOS # 测试描述workers:type: local # 工作进程类型number: 5 # 工作进程数量monitor:type: - docker- pro…...
破解路内监管盲区:免布线低位视频桩重塑停车管理新标准
城市路内停车管理常因行道树遮挡、高位设备盲区等问题,导致车牌识别率低、逃费率高,传统模式在复杂路段束手无策。免布线低位视频桩凭借超低视角部署与智能算法,正成为破局关键。该设备安装于车位侧方0.5-0.7米高度,直接规避树枝遮…...
ubuntu22.04有线网络无法连接,图标也没了
今天突然无法有线网络无法连接任何设备,并且图标都没了 错误案例 往上一顿搜索,试了很多博客都不行,比如 Ubuntu22.04右上角网络图标消失 最后解决的办法 下载网卡驱动,重新安装 操作步骤 查看自己网卡的型号 lspci | gre…...
