Windows开发入门:工具-WinDbg的安装和使用教程
序言
目录
- 序言
- 安装
- 1)下载
- 2)配置环境变量
- 3)重启并测试
- 调试场景
- 1)远程调试
- 2)即时调试
- 3)64位调试
- 4)托管应用程序的调试
- 5)调试Windows服务
- 6)调试异常
- 使用
参考文档:
WinDbg的安装
WinDbg 入门教程
Windbg教程
Windbg调试命令详解
Getting Started with Windows Debugging
安装
1)下载
点我跳转下载链接
直接点击页面里的 Download WinDbg Preview from the Microsoft Store就会自动打开windows应用商城下载。
安装完成后,可以从c盘搜索WinDbg找到安装目录,默认的是在C:\Users\你的用户名\AppData\Local\Microsoft\WindowsApps
2)配置环境变量
安装好之后就需要配环境变量,打开环境变量配置界面 我的电脑->右键属性->高级系统设置->环境变量设置->在系统变量里找到path,把你的WinDbg安装目录添加上去
然后再在系统变量中创建一个名为 _NT_SYMBOL_PATH,值为:SRVc:\mysymbol http://msdl.microsoft.com/download/symbols的环境变量。
3)重启并测试
1.将电脑重启
2.重启后打开WinDbg,然后点击->文件->Attach to Process->选择一个进程附加,
附加完成之后c盘根目录下出现名为mysymbol的文件夹,并且WinDbg里出现
则表示安装成功。
调试场景
1)远程调试
使用WinDbg进行远程调试是很容易的,而且有很多种可行的方法。在下文中,’调试服务器’指的是运行在你所要调试的远程机器上的调试器。’调试客户端’指的是控制当前会话的调试器。
使用调试器:你需要CDB, NTSD或者WinDbg已经安装在远程机器上。WinDbg客户端可以连接到CDB, NTSD或者WinDbg中的任何一个作为服务器,反之亦然。在客户端和服务器直接可以选择TCP或者命名管道作为通讯协议。
1.在服务器端的启动过程:
- WinDbg –server npipe:pipe=pipename(注:可以允许多个客户端连)
- 从WinDbg内部: .server npipe:pipe=pipename(注,连接单个客户端)
你可以用多种协议开启不同的服务会话。并且可用密码来保护一个会话。
2.从客户端连接:
- WinDbg -remote npipe:server=Server, pipe=PipeName[,password=Password]
- 从WinDbg内部: File->Connect to Remote Session: for connection string, enter npipe:server=Server, pipe=PipeName [,password=Password]
使用Remote.exe:Remote.exe使用命名管道作为通讯的方式。如果你使用的是一个命令行接口的程序,比如KD,CDB或者NTSD。你可以使用remote.exe来远程调试。注意:使用@q(不是q)来退出客户端,不用关掉服务端。
3.要启动一个服务端:
Remote.exe /s “cdp –p <pid>” test1
4.从客户端连接:
Remote.exe /c <machinename> test1
上面的test1是我们所选择的命名管道的名字。
服务端会显示那个客户端从那个服务器连接以及执行过的命令。你可以使用‘qq’命令来退出服务端;或者使用File->Exit来退出客户端。另外,如果要进行远程调试,你必须属于远程机器的”Debugger User”组并且服务器必须允许远程连接。
2)即时调试
在WinDbg的文档的”Enabling Postmorten Debugging”部分对此有很详细的讨论。简而言之,你可以把WinDbg设置成默认的即时调试器,命令就是:Windbg –I。这个命令实际上是把注册表中 HKLM/Software/Microsoft/Windows NT/CurrentVersion/AeDebug的键值设置成WinDbg。如果要把WinDbg设置成为默认的托管调试器,你需要显示设置如下的注册表键值:
- HKLM/Software/Microsoft/.NETFramework/DbgJITDebugLaunchSetting 设置成 2
- HKLM/Software/Microsoft/.NETFramework/DbgManagedDebugger 设置成Windbg.(注意其中的启动参数设置)
通过JIT的设置,当一个应用程序在不是调试的状态下抛出了未处理的异常之时,WinDbg就会被启动。
3)64位调试
所有这些调试器均支持在AMD64和IA64上的64位调试环境。
4)托管应用程序的调试
5)调试Windows服务
使用WinDbg,你可以像调试其它应用程序那样调试Windows服务程序。即可以通过附加进程的方法启动Windows服务,也可以把WinDbg当作一个即时调试器,并且在代码中调用DbgBreakPoint 或者 DebugBreak,或者在x86机器上加入一条int 3汇编指令。
6)调试异常
一个调试器会得到两次的异常通知-第一次在应用程序有机会处理异常之前(‘first chance exception’);如果应用程序没有处理这个异常,这时候调试器就会有机会来处理异常(‘second-chance exception’)。如果调试器没有处理二次机会的异常,应用程序就会退出。
.lastevent或者,!analyze –v命令会给你显示异常的记录以及异常抛出所在函数的堆栈跟踪信息。
你也可以使用 .exr, .cxr以及 .ecxr命令来显示异常和上下文记录。同时需要注意的是,你也可以改变first-chance的处理选项。对应的命令就是: sxe, sxd, sxn和sxi。
能否请教一个问题:
我的Windbg不能设置断点,重新加载Symbols文件的时候也总是有几个加载失败,Symbols file path的设置是:
SRVc:/symbolshttp://msdl.microsoft.com/download/symbols。
类似的环境变量也设置了,可是怎么弄都不行,又没有什么好的建议?
用 ; 将Symbols file path分开,例如:
d:/dev/src;SRVc:/symbolshttp://msdl.microsoft.com/download/symbols
使用
简单命令行示例
详细命令教程
Windows开发入门:工具-WinDbg的安装和使用教程相关推荐
- WPF 项目开发入门(一) 安装运行
WPF 项目开发入门(一) 安装运行 WPF 项目开发入门(二) WPF 页面布局 WPF 项目开发入门(三)WPF 窗体与页面 WPF 项目开发入门(四) MVVM 模式 与 TreeView树组件 ...
- 图像标注工具labelimg的安装和使用教程
图像标注工具labelimg的安装和使用教程 一.安装labelimg (1)首先通过Win+R快捷打开windows的"运行"对话框,在对话框中输入cmd进行终端界面. (2)在 ...
- mysql数据库解压安装教程_MySQL数据库之windows 10下解压版MySql安装配置方法教程...
本文主要向大家介绍了MySQL数据库之windows 10下解压版MySql安装配置方法教程 ,通过具体的内容向大家展现,希望对大家学习MySQL数据库有所帮助. windows 10 下安装解压版的 ...
- Swoole入门指南:PHP7安装Swoole详细教程(一) 1
这里不在使用apache做为web server.该用nginx + php-fpm,性能更强大,配置更方便.并且为了跟上php的步伐,也使用了比较新的php版本 [x] centos7 [x] ph ...
- Node.js开发入门(一)——安装Node.js及编辑器配置
Node.js是一个轻松构建快速,可扩展的网络应用平台建立在Chrome的JavaScript运行.Node.js使用事件驱动,非阻塞I/O模型,使得它重量轻,高效,完美的数据密集型实时应用程序运行在 ...
- 程序开发入门工具之CodeBlocks
程序开发基础工具之CodeBlocks 作为程序开发工作者,我们会接触很多的程序开发软件:但实用以及容易掌握的程序开发软件对于初学者的学习能力是有一定的加成的.今天我就作为一个程序开发者给大家推荐一个 ...
- 猿创征文|Android开发入门工具的那些事儿
今年是我读硕士的第一年,机缘巧合接触到了Android开发并进行了学习.工欲善其事必先利其器,那么在学习Android开发中我也使用到了很多的工具,今天就来记录一下,这些工具使用的场合及其发挥的作用, ...
- Windows 视频下载工具 lux 的安装及使用
视频下载工具 lux 的安装 参考:https://boyinthesun.cn/post/annie/ 打开 Windows PowerShell: 问题描述:如果打开 Windows PowerS ...
- Windows下手把手教Snort的安装与配置教程
也许每个人出生的时候都以为这世界都是为他一个人而存在的,当他发现自己错的时候,他便开始长大 少走了弯路,也就错过了风景,无论如何,感谢经历 Windows下手把手教Snort的安装与配置 0x01 S ...
- linux下抓包工具 wireshark,网络抓包工具Wireshark下载安装使用详细教程
叮嘟!这里是小啊呜的学习课程资料整理.好记性不如烂笔头,今天也是努力进步的一天.一起加油进阶吧! 一.关于Wireshark Wireshark(前身 Ethereal)是一个网络包分析工具.该工具主 ...
最新文章
- 边端云处理器系列技术参数
- unbuntu18 netplan 配置固定IP
- oracle 9i rac Linux,请教高手!能在linux下安装两套oracle 9i RAC 数据库软件与实例吗?...
- MySQL 4到5的快速升级
- Android 21mod,熊猫博士小镇合集 Mod
- stata中介效应的sobel检验_SPSS进行中介效应检验的实战操作与分析——杏花开生物医药统计...
- 工控领域的网络攻击 食尸鬼行动深入解读Operation Ghoul
- 计算机绘图cad期末考试试题,20年广东理工学院成人高考期末考试 计算机绘图(AutoCAD) 复习资料.pdf...
- 一、Scrapy爬虫概述
- QDateTime 和tm 的时间显示
- EBS 个性化:个性化简介
- bios対初学者_初学者的BIOS
- Python图片文字提取
- JPress安装体验
- 亚商投资顾问 早餐FM/0928 养老金抵扣个税优惠来了
- Python实现直方图梯度提升分类模型(HistGradientBoostingClassifier算法)并基于网格搜索进行优化同时绘制PDP依赖图项目实战
- org.apache.ibatis.builder.IncompleteElementException: Could not find parameter map java.util.Map
- JavaWeb篇之一——使用原生JDBC对数据库进行操作
- python 期货交易_Python期货量化交易基础教程(1)
- Java写的滑雪爱好者组织活动,预约活动,参与竞赛系统源码
热门文章
- 2021赣网杯web和misc部分wp
- 海康网络摄像机与电脑交互,有网络和无网络两种方式读取URL视频流,以及无网络情况下配置IP地址
- fpga板子怎么和电脑连_[笔记].怎样正确插拔FPGA开发板的JTAG仿真器,如USB-Blaster等?...
- 浅谈“异常信息泄露(应用程序错误)”
- 汽车IC TPS7A6633QDGNRQ1应用 低压降线性稳压器
- 高等数学:第六章 定积分的应用(4)平面曲线的弧长
- 伺服电机驱动器编程用c语言吗,伺服电机如何编程
- python自动化运维之路~DAY2
- DevIL的学习笔记
- The Devil is in the Channels: Mutual-Channel Loss for Fine-Grained Image Classification