参考官方文档:使用 WinDbg 进行调试 - Windows drivers | Microsoft Docs
寄存器含义:x86寄存器_池塘码农的博客-CSDN博客_cs和ds寄存器的区别
windbg下载地址:
x64:http://download.microsoft.com/download/A/6/A/A6AC035D-DA3F-4F0C-ADA4-37C8E5D34E3D/setup/WinSDKDebuggingTools_amd64/dbg_amd64.msi
x86:http://download.microsoft.com/download/A/6/A/A6AC035D-DA3F-4F0C-ADA4-37C8E5D34E3D/setup/WinSDKDebuggingTools/dbg_x86.msi

异常说明
1. 80000003  Break instruction exception

    中断指令异常,表示在系统未附加内核调试器时遇到断点或断言,通常中断指令异常可以在以下条件下触发:
    a.硬代码中断请求,如:asm int 3
    b.System.Diagnostics.Debugger.Break(C 35)
    c.DebugBreak()(WinAPI)
    d.操作系统启用内存运行时检查,就像应用程序验证程序在堆损坏、内存溢出后会触发一样。
    e.编译器可以有一些配置来启用未初始化的内存块和函数结束时应填充的内容(在重新运行..后的空白区域)。例如,如果启用/GZ,Microsoft VC编译器可以填充0xCC。0xCC实际上是asm int 3的操作码。所以如果某个错误导致应用程序运行到这样的块中,就会触发一个断点。

c0000005  Access violation
   
非法访问,导致的原因:
    1. 指针异常。引用指针前判断指针是否为空
    2. 数据越界。

2. c0000409 (Security check failure or stack buffer overrun)
    堆栈溢出是用户模式线程可能遇到的错误。有三个可能的原因导致此错误:
    a.线程使用为其保留的整个堆栈。这通常是由无限递归引起的。
    b.线程无法扩展堆栈,因为页面文件已用完,因此无法提交任何其他页面来扩展堆栈。
    c.线程无法扩展堆栈,因为系统在用于扩展页面文件的短暂时间内。

3. c0000374

C:\Program Files\WindowsApps\Microsoft.WinDbg_1.2206.19001.0_x64__8wekyb3d8bbwe

1.显示所有线程
  ~  // 显示所有线程
  ~*

2.显示堆栈
  k  // 显示当前堆栈
  kb // 显示当前堆栈,包括显示传递给堆栈跟踪中每个函数的前三个参数
  kp // 显示当前堆栈,显示传递给堆栈回溯中的每个函数的所有参数
  ~0k // 显示第0个线程的堆栈,主线程
  
3.反汇编
  view->disassmebly  // 打开反汇编窗口
  u [address]   // 查看某个地址的反汇编代码
  u [func]      // 查看某个函数的反汇编代码

4.查看寄存器的指针地址
  r ebp

显示局部变量
  dv

5.调试
  t // 下一步,可进入函数体
  p // 下一步,可跳过函数体
  g // 继续go, F5
  tb // 执行到下一个分支
  tc // 执行到下一个函数

6.常用命令
  !analyze -v     // 分析
  .ecxr               // 查看当前异常的上下文信息、和部分寄存器信息
  .exr -1
  lmvm "模块名" // 显示该模块的详细信息
  kb     // 显示堆栈崩溃,具体到行
  .reload /i spdbicps.exe  强制关联pdb
  lmvm heap_corruption
  lmDv
  .dump /ma D:/example.dmp  // 生成dmp到指定文件夹
  dt _DPH_BLOCK_INFORMATION  地址-0x20
  dds 地址
  .load wow64exts  // [!load wow64exts] 加载wow64exts.dll模块  注:!sw就是wow64exts中的命令
  .unload wow64exts  // [!unload wow64exts] 卸载wow64exts.dll模块
  .effmach  // 查看当前调试mode:x86、x64等
  .effmach x86 // 切换到x86栈环境  注:需要先执行.load wow64exts来加载wow64exts.dll模块
  .effmach . // 切换回x64
   !cs -l  // 查看死锁
   dg  // 查看一个段选择器子所指向的段描述符的详细信息
  .formats // 在当前线程和进程的上下文中计算表达式或符号,并以多种数字格式显示它。
  !runaway 查看cpu占用
  !process 0 0 // 查看所有进程信息
  -sa 首地址 结束地址 // 命令搜索未指定的ASCII字符串
  s -su 首地址 结束地址 // 命令搜索未指定的Unicode字符串
  ? 0y0101010 //  ? C++表达式,0x前缀(16进制)、  0n前缀(10进制)、 0t前缀(8进制)或   0y前缀2进制
  !locks   如果失败,则加载sos.dll :.load
      C:\Windows\Microsoft.NET\Framework\v4.0.30319\SOS.dll  然后 .reload

7. 下载微软符号文件
.sympath SRV*c:\mySymbols*http://msdl.microsoft.com/download/symbols
.reload

windbg 常用调试命令总结相关推荐

  1. Bochs常用调试命令

    Bochs常用调试命令 Bochs是非常好用的模拟器,命令也很多,不过最常用的其实总结起来也就包括几条,记住这些命令基本都可以满足调试需求了. 1. 断点操作 (1)设置断点:b 物理地址 例:b 0 ...

  2. Rockchip Android平台常用调试命令汇总

    Rockchip Android平台常用调试命令汇总 文章目录 Rockchip Android平台常用调试命令汇总 查看帧率信息 查看显示图层信息 手动触发内核产生panic 通过命令设置Andro ...

  3. vxworks常用调试命令

    总结的vxworks常用调试命令,学习vxworks这些东西是必须的. 1.与任务相关的命令  sp, [arg1], ..., [arg9]     -启动任务,最多接受9个参数,默认的优先级100 ...

  4. Linux(gcc编译原理、过程以及常用调试命令)

    PS:红色字体表示重点,绿色字体表示重要标题,块引用中表示Linux终端中的命令. 1.gcc / g++的安装 命令:sudo apt install gcc /gcc+ 2.gcc编译连接 //m ...

  5. Linux+gcc设置断点,gcc/g++常用编译选项和gdb常用调试命令

    8种机械键盘轴体对比 本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选? gcc/g++编译器是我们写编译C/C++程序时离不开的编译工具,而gdb又是调试C/C++程序的利器,这一篇文章我们记 ...

  6. Mtk WIFI常用调试命令

    在手机开发之初,我们很多时候要在lcm和tp还没有正常工作的时候就需要同步的进行wifi模块功能的开发,所以了解常用的命令会有助于我们快速的开发我们的手机,以下就是列出的常用命令供大家借鉴运用: 1. ...

  7. Camera | 3.瑞芯微平台MIPI摄像头常用调试命令

    瑞芯微专栏 前面2篇我们讲解了camera的一些基础概念和知识. 本文主要讲述在瑞芯微平台上摄像头开发常用的调试命令. 0.环境 soc : rk3568 board: EVB1-DDR4-V10 软 ...

  8. GDB常用调试命令以及多进程多线程调试

    今天把所有的GDB常用的调试命令都过了一遍,尤其是多线程调试.所以先做个总结,以免忘记.以后如果有新的有用的命令会继续追加. 本文地址:(LYanger的博客:http://blog.csdn.net ...

  9. iOS之LLDB常用调试命令

    LLDB是个开源的内置于XCode的调试工具,这里来理一理常用用法. lldb对于命令的简称,是头部匹配方式,只要不混淆,你可以随意简称某个命令.结果为在xcode下验证所得,可能与其它平台有所误差. ...

  10. 附上windebug常用调试命令

    一.基础命令 程序重在编程思维,难在程序调试,写出了程序还不行,还必须进行调试,证明结果. WinDbg是微软开发的一款强大无比的调试器.利用它我们可以进行内核双机调试. 在调试程序之前我们要掌握如何 ...

最新文章

  1. LVS/NAT 配置
  2. 类加载、类加载器、反射
  3. WWW 2021有哪些值得读的图机器学习相关论文?
  4. 美赛最新通知:论文接收状态已更新完毕!
  5. Tomcat连接池配置
  6. php视频上传教程,PHP实现视频文件上传完整实例,_PHP教程
  7. 汽车电子专业知识篇(十五)-整车电气系统设计——高压系统集成方案
  8. 位置问题_改变铸件浇注入水位置,能解决哪些问题?
  9. CSS精粹之布局技巧
  10. android应用程序的生命周期,Android应用程序的生命周期.doc
  11. GAE 博客——B3log Solo 0.3.0 正式版发布了!
  12. 1621: [Usaco2008 Open]Roads Around The Farm分岔路口(记忆化搜索)
  13. Win2012 R2 IIS8.5+PHP(FastCGI)+MySQL运行环境搭建教程
  14. java 打印机类printer_Spring案例打印机的实现过程详解
  15. Python中scipy库的pearsonr(x, y)的使用
  16. 超详细的cookie属性HttpOnly和SameSite引起的漏洞解决方案
  17. Python selenium —— selenium与自动化测试成神之路
  18. unity 模型销毁_Unity中销毁游戏对象的方式
  19. 伽卡他卡使用教程_【伽卡他卡电子教室教师端介绍】伽卡他卡电子教室教师端特色_伽卡他卡电子教室教师端说明-最笨下载...
  20. Pandas:single positional indexer is out-of-bounds

热门文章

  1. java微信素材编辑_Java微信公众平台开发之素材管理(Spring Boot 2.X)
  2. IT行业都有哪些职位,初学者(0基础,新人)该如何选择,才能够快速进入这个行业?... 1
  3. C++ 表达式必须含有常量值变量
  4. 管理信息系统需求调研分析指南-软件工程-www.knowsky.com
  5. 影像自动解译_遥感图像解译
  6. php rrd 做统计数据,Ganlia采样、统计及RRD记录周期(频次、间隔)的配置和更改...
  7. 前端js常用剪贴板(复制粘贴)操作和应用,以及navigator.clipboard新粘贴板API使用
  8. python自学课堂_python自学——列表
  9. java short 无符号_有符号/无符号的int,short和char
  10. 巧用Python爬取QQ空间好友信息,生成词云