首页 > 编程语言 >【C++软件调试技术】使用 Windbg 分析软件异常时的诸多细节与技巧总结

【C++软件调试技术】使用 Windbg 分析软件异常时的诸多细节与技巧总结

时间:2024-07-28 12:29:14浏览次数:14  
标签:文件 Windbg dump 程序 C++ 软件 异常 pdb

目录

1、dump文件

1.1、dump文件的生成方式

1.2、dump文件的大小

2、pdb符号文件

2.1、pdb文件的路径设置

2.2、pdb文件的时间戳与名称问题

2.3、如何确定要找哪些pdb文件?

3、使用Windbg静态分析dump文件以及动态调试程序的一般步骤

4、确定发生异常或崩溃的业务模块,到业务模块的函数中去排查

5、在分析从任务管理器中导出的dump文件时可能需要使用.effmach命令切换一下上下文

5.1、操作系统位数与程序位数

5.2、使用.effmach命令将线程上下文切换到32位

6、Windbg动态调试目标进程时遇到因为调用了IsBadWritePtr或者IsBadReadPtr引发的异常

7、什么时候使用Windbg静态分析?什么时候使用Windbg动态调试?

7.1、程序发生死循环或死锁问题时

7.2、程序发生异常,但异常捕获模块没有捕获到

7.3、异常捕获模块感知到了异常,但导出dump文件时产生了二次崩溃,dump文件生成失败

7.4、程序运行过程中检测到不正常,直接调用abort函数强制结束进程,导致程序闪退

7.5、用IDE调试程序时产生异常,但看不到有效的函数调用堆栈,可以尝试使用Windbg进行动态调试

7.6、程序启动崩溃或失败时

7.7、程序弹出报错提示框时

8、有时可能需要使用反汇编工具IDA查看汇编代码上下文去辅助定位问题

9、熟悉Windbg命令

10、最后


C++软件异常排查从入门到精通系列教程(专栏文章列表,欢迎订阅,持续更新...)icon-default.png?t=N7T8https://blog.csdn.net/chenlycly/article/details/125529931C/C++基础入门与实战进阶(已更新到220篇以上,持续更新中...)

标签:文件,Windbg,dump,程序,C++,软件,异常,pdb
From: https://blog.csdn.net/chenlycly/article/details/140742933

相关文章

  • 【C++进阶学习】第九弹——哈希的原理与实现——开放寻址法的讲解
    前言:在前面,我们已经学习了很多存储机构,包括线性存储、树性存储等,并学习了多种拓展结构,效率也越来越高,但是是否有一种存储结构可以在大部分问题中都一次找到目标值呢?哈希可能能实现目录一、哈希的概念二、哈希冲突三、哈希冲突解决3.1开放寻址法节点结构插入操作查......
  • 软件项目管理开发文档(规格说明书;详细设计;测试计划;验收报告)
    前言:在软件开发过程中,文档资料是非常关键的一部分,它们帮助团队成员理解项目需求、设计、实施、测试、验收等各个环节,确保项目的顺利进行。以下是各个阶段的文档资料概述:软件项目管理部分文档清单: 工作安排任务书,可行性分析报告,立项申请审批表,产品需求规格说明书,需求调研计......
  • 虚拟硬盘系统 —— Windows系统 磁盘加速软件
    在家里的局域网搞了一个NAS,但是由于磁盘读存速率问题导致远程copy的速度只有15MB/s,而如果NAS中的文件已在内存中有缓存则远程copy的速度为50MB/s。于是考虑利用内存建立虚拟硬盘:https://www.bilibili.com/video/BV1te41127vd/?vd_source=f1d0f27367a99104c397918f0cf362b7关......
  • Codeforces Round 962 (Div. 3) A - D详细题解(思路加代码Python,C++(垃圾灰名小白想
             吐槽一下,这次比赛不知道怎么的,可能是div3参加的人比较多吗,代码题解上去后全是inqueue,比赛的过程中我还看了提交的,80多页几千个提交全是inqueue,我的代码等了**半个多小时才运行,然后发现timelimit真的有点搞心态,思路在下一题我还要反过来去优化上一题,不过......
  • Visual Studio C++ 安装以及使用教程
    官网下载网址https://visualstudio.microsoft.com/zh-hans/VisualStudio:面向软件开发人员和Teams的IDE和代码编辑器(microsoft.com)下载好后双击运行跳出该界面,等待加载结束在组件选择界面,只需要选择这一项,勾选好后点击安装即可下载完后,点击图标打开C++点击创......
  • 【免费领源码】Java/Mysql数据库+SSM校园兼职网站 25557,计算机毕业设计项目推荐上万套
    摘 要当今人类社会已经进入信息全球化和全球信息化、网络化的高速发展阶段。丰富的网络信息已经成为人们工作、生活、学习中不可缺少的一部分。人们正在逐步适应和习惯于网上贸易、网上购物、网上支付、网上服务和网上娱乐等活动,人类的许多社会活动正在向网络化发展。兼职......
  • 【免费领源码】Java/Mysql数据库+springboot驾校预约管理系统 25540,计算机毕业设计项
    摘 要随着科学技术的飞速发展,各行各业都在努力与现代先进技术接轨,通过科技手段提高自身的优势;对于驾校预约管理系统当然也不能排除在外,随着网络技术的不断成熟,带动了驾校预约管理系统,它彻底改变了过去传统的管理方式,不仅使服务管理难度变低了,还提升了管理的灵活性。这种......
  • C++字体库开发之go语言绑定六
    export.h#defineFONTVIEW_API__declspec(dllimport)typedefvoid*GoFontSetPtr;#ifdef__cplusplusextern"C"{#endifFONTVIEW_APIGoFontSetPtropenFontSet(constchar*stream,size_tsize);FONTVIEW_APIvoidfreeFontSet(GoFontSetPtrfontset);......
  • 软件测试--软件生命周期
        软件和其他产品一样,都有一个从“出现”到“消失”的过程。这个过程就称作软件生命周期。就好像我们人类一样,从出生--少年--青年--中年--老年--死亡一样,可以将软件生命周期划分为6个阶段:问题定义、需求分析、软件设计、软件开发、软件测试、软件维护最后淘汰。下面我......
  • 随着软件开发方法的不断演进,Cobol 程序如何适应敏捷开发和持续集成/持续部署(CI/CD)的流
    Cobol是一种古老的编程语言,最初设计用于商业数据处理。虽然它不是为敏捷开发和CI/CD流程而设计的,但仍然可以通过一些技术和方法来使其与这些现代开发流程兼容。以下是一些方法可以帮助Cobol程序适应敏捷开发和CI/CD流程:拆分和模块化:将Cobol程序拆分为更小的模块,使每个模......