1、安装WinDbgPreview

在Microsoft Store直接搜索windbg就可以下载。

2、配置符号服务器

2.1 符号

符号是方便调试程序的文件,通常是pdb文件。一个模块(可执行程序,动态链接库)对应一个pdb文件。不同的windows版本中的文件不同(比如说kernel32),版本不同pdb符号文件也不同,因此要从微软提供的符号服务器获取本机对应的符号。

但是要在本地建立一个文件夹作为缓存来存放符号文件,以便下次使用时直接从本地获取。

2.2 配置

1、可以在环境变量设置_NT_SYSBOL_PATH为 srv*C:\Symbols*http://msdl.microsoft.com/download/symbols

其中c:\Symbols就是自己本机上符号的缓存目录,可以自己设置。后面网址就是微软符号服务器了

但是,我是用这种方法时,visual studio调试时会自动从这个网站加载符号,非常浪费时间,令人崩溃。而且好像强制没法关闭,所以根据自己情况自行选择。

2、不设置环境变量了,直接进入windbg,file->setting->debugging settings把symbol path填入也可以。



如图所示。

3、加载一个可执行文件在

在命令行输入.sympath命令也可以添加。这一个方法自行搜索。

3、基本使用

3.1 加载文件

直接把可执行文件拖进去就可以,或者file->lanch executable加载一个文件。会自动识别是32位程序还是64位程序。这里可以直接打开记事本文件notepad.exe做测试。

在命令窗口输入lm,显示notepad.exe用到的模块以及符号表对应情况。

如图,deferred对应的模块没有加载,pdb带路径的就是加载了符号表。kernel32符号表已经加载,但是user32符号表没有加载。可以用ld kernel32加载符号文件。

3.2 常用命令

r 查看寄存器

t 单步执行,遇到call跟进去

g 运行

bp (address | function),在地址下断点,比如,bp 0x401000,或者 bp kernel32!CreateFileW

最新文章

  1. 基于mysql的数据管理
  2. mongoDB index introduction
  3. (windows)mongoDB3X+Robomongo的安装与基础配置
  4. haproxy log config
  5. Wampserver3.0.0设置语言为中文无效
  6. 链表操作----将单链表向右旋转 K 个位置
  7. 05 Linux下开发JSP项目(Hello world)
  8. cocos2d-x使用tinyxml2存储解析xml
  9. Makefile自动生成头文件依赖
  10. 位图文件(BMP)格式以及Linux下C程序实现(转)
  11. ASP.NET Core 认证与授权[6]:授权策略是怎么执行的?
  12. 防盗链[referer]
  13. Github把自己的本地项目托管到git上
  14. yum makecache
  15. KXO151 Programming & Problem Solving
  16. 两种语言实现设计模式(C++和Java)(四:适配器模式)
  17. 【原创】Innodb中mysql如何快速删除2T的大表
  18. css之文本两端对齐
  19. C#语法糖(Csharp Syntactic sugar)
  20. Redis集合操作

热门文章

  1. PostgreSQL 备份
  2. 60行从零开始自己动手写FutureTask是什么体验?
  3. BMP位图之4位位图(二)
  4. LuoguP1516 青蛙的约会 (Exgcd)
  5. LuoguU72177 火星人plus (逆康拓展开)
  6. 国产时序数据库IotDB安装、与SpringBoot集成
  7. java-运算符与判断
  8. 在 Linux 中安装 MongoDB 的流程
  9. Python小游戏——外星人入侵(保姆级教程)第一章 07调整飞船速度 08限制飞船活动范围
  10. mybatisplus-Service CRUD 接口