PC软件崩溃定位方式-windbg

2023-11-03

本篇适用于WINDOWS的C/C++编译的程序分析,不适用于C#/java程序分析。

windbg是微软的工具,可以去微软官方搜索下载。

该工具可以调试exe,也可以导出收集dmp文件,用于后续分析。

当前方式主要应用于启动的瞬间崩溃。

分析步骤:

  1. 启动windbg。

  1. 在windbg配置pdb符号文件路径。

  1. 通过windbg加载exe。

  1. 通过windbg运行exe。

  1. 用windbg命令分析崩溃代码。

  1. 启动windbg.

首先要从微软官网获取windbg工具。然后运行。

  1. 配置windbg的pdb路径

配置pdb文件路径。

界面左上角菜单:

文件--符号文件路径,加上testdbg.exe相关编译生成的PDB文件路径。

  1. 通过windbg加载exe

界面左上角菜单:

文件--打开可执行文件,在弹窗中,找到本地exe并打开。 打开后效果图:

可以看到exe和相关模块dll被加载了。

但代码还没开始执行,只是各模块被系统装载了。

  1. 通过windbg运行exe

前面通过windbg打开exe,系统已经把exe和相关DLL加载进内存。

截止开始运行exe。

输入命令:g

该命令即运行程序。

如图所示,执行命令g后,

遇到了异常:This exception may be expected and handled.

并且在模块代码位置:mydll3!`dynamic initializer for 'g_vtmp0''+0xd

到这里,看到程序执行遇到了崩溃。

5.用windbg命令分析崩溃代码

windbg命令: !analyze -v

意思是分析崩溃信息,得到异常点代码。

执行命令后,结果如下图所示:

根据崩溃的堆栈信息,得到崩溃的代码在mydll3.cpp @ 34,即第34行代码。

这里的34行,是全局变量初始化,会执行28行构造,进而执行21行指针操作,导致崩溃。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PC软件崩溃定位方式-windbg 的相关文章

  • do { ... } while (0) — 它有什么用? [复制]

    这个问题在这里已经有答案了 我已经看到这个表情十多年了 我一直在努力思考它有什么好处 因为我主要在 defines 中看到它 所以我认为它对于内部作用域变量声明和使用中断 而不是 gotos 很有用 对其他方面有好处吗 你用它吗 这是 C
  • 将 LUIS 与 FormFlow 集成

    我创建了一个机器人 里面有一个 FormFlow 现在 如果您输入 我想启动产品 LUIS 将告诉它必须转到哪个对话框 internal static IDialog
  • 在 MS word .docs 中插入 MathMl 、 Tex 或 LaTex 方程?

    我一直在寻找 C 中 Net 的一些 dll 用于在 MS Word 中插入任何 MathMl Tex 或 LaTex 方程 我尝试了一些类似 DocX 的工具 但它们失败了 你知道吗 或任何提示如何做到这一点 谢谢 Word 2007 可
  • C# 3 新功能帖子(与 .Net 3.5 功能无关)[关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions Net F
  • 关闭模态后清除模态字段

    我有这个模式
  • 如何将带有自定义标头的任意 JSON 数据发送到 REST 服务器?

    TL DR 如何将 JSON 字符串发送到带有 auth 标头的 REST 主机 我尝试了 3 种不同的方法 发现一种适用于匿名类型 为什么我不能使用匿名类型 我需要设置一个名为 Group Name 的变量 并且连字符不是有效的 C 标识
  • send() 使我的程序崩溃

    我正在运行服务器和客户端 我正在我的计算机上测试我的程序 这是服务器中向客户端发送数据的函数 int sendToClient int fd string msg cout lt lt sending to client lt lt fd
  • SQL 选择与带有通配符的 URL 匹配的行

    我在数据库中有一个表 其中一列包含一个 URL 例如http example com users http example com users 轮廓 我得到了一个 URL 例如http example com users 234 profi
  • 命名空间中不存在类型或命名空间名称 - 但命名空间确实存在

    我已经工作了很长时间没有任何问题的项目突然开始抛出错误 例如 The type or namespace name xxx does not exist in the namespace yyy are you missing an ass
  • 数据绑定问题,请解释

    public partial class Form1 Form MyClass myClass new MyClass one two public Form1 InitializeComponent textBox1 DataBindin
  • 大表的最佳主键格式

    我正在开发一个 ASP NET 应用程序 它有一些可能很大的数据表 我想知道定义主键的最佳方法是什么 我知道以前已经有人问过这个问题 但由于这是针对特定情况的 所以我认为这个问题是有效的 我在 SQL Server 2008 数据库上使用实
  • Time 方法在另一个线程中执行并在超时时中止

    您好 我正在尝试异步运行方法 以便计算持续时间并在超过超时时取消该方法 我尝试使用异步和等待来实现这一点 但没有运气 也许我过度设计了这个 任何输入都会受到赞赏 应该注意的是 我无法更改接口 TheirInterface 因此得名 到目前为
  • std::regex 的行为不一致

    我有以下问题 std regex如果我传递结果 行为会有所不同boost filesystem path string vs 将结果存储在中间字符串变量中 第一个将返回一个被截断的匹配 并且稍后不被接受std stoull 抛出 inval
  • 如何在调试时轻松查看事件订阅数量?

    在调试时 我可以查看一下textBox1 TextChanged查看事件订阅数量 如果是 那么我该如何钻取它 我需要知道在给定时间有多少订阅进行调试 因为看起来一个事件被多次触发 但我怀疑这个错误确实是因为textBox1 TextChan
  • NHibernate Criteria API 是否支持集合属性的投影?

    我需要使用条件 API 复制以下工作 HQL 查询 session CreateQuery select c from Parent p inner join p Children c where p Id 9 and c Id 33 Se
  • WMI 不返回 Windows 7 64 上的所有安装程序

    今天 我们尝试使用以下脚本列出每个虚拟机上所有已安装的程序来查询 WMI 我们发现它会列出所有 64 位应用程序 以及一些 32 位应用程序 但并非所有应用程序 32 位 64 位 都会列出 param string ExportPath
  • 解析 SWIG 接口文件的结构属性

    这是我不久前问过的问题的延续 为通过参数返回的函数创建类型映射 https stackoverflow com questions 12793973 create a typemap for a function that returns
  • 使用 C++20 概念避免 std::function

    过去 当我想要回调作为函数参数时 我通常决定使用std function 在极少数情况下 我绝对从不使用捕获 我使用了typedef改为函数声明 因此 通常我的带有回调参数的声明看起来像这样 struct Socket void on re
  • 最有用的用户制作的 C 宏(在 GCC 中,还有 C99)? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 是一对一的关系不好的策略

    用户始终拥有一个钱包 一个钱包始终属于一位用户 由于我想分离与钱夹相关的属性 我创建了 Wallet 对象并能够跟踪钱交易 我创建了 public Wallet Entity

随机推荐

  • 区块链相关概念与简介

    摘要 2017 2018年 互联网界最火热的话题之一就是区块链 各大公司相继宣布对区块链方面的投资和开发 各大互联网公司也前后推出自己区块链产品 例如阿里的麻吉宝 百度的莱次狗 腾讯的TrustSQL等等 那么区块链到底是什么 本文简单介绍
  • strace 命令来查看系统调用

    strace p pid strace p pid i i 显示函数地址
  • Android Service两种启动方式

    1 Context startService 方式启动 Context startService 方式的生命周期 启动时 startService gt onCreate gt onStart 可多次调用 Service running 停
  • 并发编程集合

    转载自郑金维老师 一 synchronized 一 原子性 有序性 可见性 1 1 原子性 数据库的事务 ACID A 原子性 事务是一个最小的执行的单位 一次事务的多次操作要么都成功 要么都失败 并发编程的原子性 一个或多个指令在CPU执
  • AutoSAR系列讲解(实践篇)7.7-实验:配置SWC&RTE(下)

    AutoSAR系列讲解 实践篇 7 7 实验 配置SWC RTE 下 实验 配置SWC RTE 下 三 步骤二 配置Runnable及其Tasks映射 1 添加及配置Runnable 2 打开Cfg并同步工程 3 导入DBC文件 4 创建T
  • 一图读懂FISCO BCOS MVP计划

    点击填写FISCO BCOS MVP申请表 问卷系统 了解更多干货内容 请关注FISCO BCOS开源社区公众号 访问FISCO BCOS代码仓库可下载项目所有源代码 https github com FISCO BCOS FISCO BC
  • 从连续时间傅里叶级数到快速傅里叶变换

    在计算机上编程做信号处理时 我们通常用的是FFT 但是开始学信号处理时 一般是从FS开始的 所以这里整理一下从FS到FFT 演变 的过程 以下是傅里叶 家族 的一些名称 FS Fourier Series 连续时间周期信号的傅里叶级数 FT
  • GET请求,接收多个对象参数

    非常简单 如下 GetMapping test public void test String name City city 省略 还没看懂 详细解释一下 例如City类有id describe字段 Data public class Ci
  • STM32F407写超声波传感器HC-SR04程序

    1 给超声波模块接入电源和地 2 给trig输入一个长为20us的高电平方波 3 输入方波后 模块会自动发射8个40KHz的声波 echo的电平会由0变为1 4 当超声波返回被模块接收到时 回波引 脚端的电平会由1变为0 定时器记下的这个时
  • 开发场景运维操作命令

    uname a 查看内核 操作系统 CPU信息的linux系统信息命令 head n 1 etc issue 查看操作系统版本 是数字1不是字母L cat proc cpuinfo 查看CPU信息的linux系统信息命令 hostname
  • 【gperftools】使用gperftools分析

    文章目录 使用gperftools分析 配置环境 Demo 使用gperftools分析 配置环境 perftools http code google com p gperftools downloads list libunwind h
  • 常用HTML标签属性

    跑马灯
  • python基础_包引入,OS模块和异常处理

    包引入 库 提供一系列的功能 1 内置库 包 不需要安装可以直接使用 安装路径在 Lip 2 第三方库 包 先pip安装在使用 安装路径在 Lip site packages 3 自定义的模块 包 有2种 a 同级目录 import 模块名
  • 「第六篇」对于电赛,我们应该看重什么?

    这几天更新了一些关于电赛的帖子 有设计方案 也有一些经验贴 大家可以在下面的链接找到 第一篇 大学生电子设计竞赛 等你来提问 第二篇 全国一等奖 经验帖 第三篇 全国电子设计竞赛 这些你必须知道的比赛细节 文末附上近十年电赛题目下载 第四篇
  • 【学习】对于AndroidStudio 中 Local History还原文件的理解

    1 理解结果 2 理解过程 2016年7月21日 星期四 因为很少使用AS的LocalHistory 所以对LocalHistory的不怎么理解 平时也就是拿来看看旧的代码 但是今天在使用LocalHistory的时候出了一个问题 就是在P
  • 一键自动状态机复用

    一键自动状态机复用 代码块 using System Collections Generic using System IO using UnityEditor using UnityEditor Animations using Unit
  • quartz报错Couldn’t obtain triggers for job:connection closed

    运行环境 springboot2 1 1 quarz2 3 0 jdk8 war包运行在tomcat9 11 00 57 624 http nio 8082 exec 2 ERROR c k f w e GlobalExceptionHan
  • 【华为OD统一考试B卷

    在线OJ 已购买本专栏用户 请私信博主开通账号 在线刷题 运行出现 Runtime Error 0Aborted 请忽略 华为OD统一考试A卷 B卷 新题库说明 2023年5月份 华为官方已经将的 2022 0223Q 1 2 3 4 统一
  • Hexo搭建教程

    小白搭建教程 逢山开路 遇水架桥 亲测有效 在搭建过程中遇到问题也可以看看我这篇博客 或许有相似的问题 我这里遇到并解决的问题是 npm命令报错 没有权限 hexo g命令报错 duplicated mapping key hexo d命令
  • PC软件崩溃定位方式-windbg

    本篇适用于WINDOWS的C C 编译的程序分析 不适用于C java程序分析 windbg是微软的工具 可以去微软官方搜索下载 该工具可以调试exe 也可以导出收集dmp文件 用于后续分析 当前方式主要应用于启动的瞬间崩溃 分析步骤 启动