C++(Qt)软件调试---无法校验pdb时间戳(23)

C++(Qt)软件调试---无法校验pdb时间戳(23)


### 文章目录

  • [C++(Qt)软件调试---无法校验pdb时间戳(23)](#文章目录 C++(Qt)软件调试---无法校验pdb时间戳(23) @[toc] 1、概述🐜 2、前期准备🪲 3、开始分析🦧 4、相关地址🐐)
  • [@[toc]](#文章目录 C++(Qt)软件调试---无法校验pdb时间戳(23) @[toc] 1、概述🐜 2、前期准备🪲 3、开始分析🦧 4、相关地址🐐)
  • [1、概述🐜](#文章目录 C++(Qt)软件调试---无法校验pdb时间戳(23) @[toc] 1、概述🐜 2、前期准备🪲 3、开始分析🦧 4、相关地址🐐)
  • [2、前期准备🪲](#文章目录 C++(Qt)软件调试---无法校验pdb时间戳(23) @[toc] 1、概述🐜 2、前期准备🪲 3、开始分析🦧 4、相关地址🐐)
  • [3、开始分析🦧](#文章目录 C++(Qt)软件调试---无法校验pdb时间戳(23) @[toc] 1、概述🐜 2、前期准备🪲 3、开始分析🦧 4、相关地址🐐)
  • [4、相关地址🐐](#文章目录 C++(Qt)软件调试---无法校验pdb时间戳(23) @[toc] 1、概述🐜 2、前期准备🪲 3、开始分析🦧 4、相关地址🐐)
更多精彩内容
👉内容导航 👈
👉C++软件调试 👈

1、概述🐜

windows中使用windbg调试程序时需要使用到源代码、可执行程序、pdb符号表;

而加载pdb符号表时有可能会失败,常见原因有两种:

  • 名称错误:pdb符号表和可执行程序名称应该是相同的,如果随意改动会加载失败;
  • 时间戳错误:加载pdb符号表时会校验pdb与exe的生成时间戳是否相同,如果不同也会失败,报错WARNING: Unable to verify timestamp for TestCrash_1.1.0.exe

本文中主要讲解pdb时间戳校验失败如何加载。

演示环境:

  • 系统:

    • Windows11
  • 开发环境:

    • Qt
  • 编译器:

    • msvc2022-64

2、前期准备🪲

  • 演示代码
  • 使用debug模式编译第一次,将生成的pdb符号表复制到其他地方;
  • 使用debug模式编译第二次,将第一次生成的pdb符号表替换第二次生成的符号表,这样pdb和exe时间就不会相同了。
  • 运行TestCrash程序,生成dmp文件。

3、开始分析🦧

  1. 将生成的pdb文件拖进windbg中;

  2. 使用.sympath+ E:\test\bin64命令设置pdb符号表路径;

  3. 使用lm命令查看pdb符号表加载情况,如下图所示未加载;

  4. 使用.reload /f Test*命令加载TestCrash_1.1.0.exe的符号表,显示信息如下,加载失败,校验时间戳错误;

  5. 打开Call Stack窗口;

  6. 输入.excr命令显示与当前异常关联的上下文记录,发现因为没有加载符号表,无法定位异常位置;

  7. 方法一: 使用.symopt+ 0x40 命令++当尝试匹配符号时,此符号选项可降低符号处理程序的挑剔度++。官方文档地址:

  8. 方法二: 使用 .reload /i TestCrash_1.1.0.exe命令,其中/i忽略 .pdb 文件版本中的不匹配情况。TestCrash_1.1.0.exe为需要加载的可执行程序名称。然后再次运行.excr就可以进行分析了,官方文档地址:

4、相关地址🐐

相关推荐
姜糖编程日记5 小时前
C++——初识(2)
开发语言·前端·c++
ECT-OS-JiuHuaShan5 小时前
麻烦是第一推动力,不厌其烦就是负熵流
开发语言·人工智能·数学建模·学习方法·量子计算
Hy行者勇哥6 小时前
JavaScript性能优化实战:从入门到精通
开发语言·javascript·性能优化
Kiyra6 小时前
八股篇(1):LocalThread、CAS和AQS
java·开发语言·spring boot·后端·中间件·性能优化·rocketmq
程序员阿鹏6 小时前
分布式事务管理
java·开发语言·分布式
未来之窗软件服务6 小时前
JAVASCRIPT 离线解析IP地址 幽冥大陆(七十) —东方仙盟练气期
开发语言·javascript·tcp/ip·仙盟创梦ide·东方仙盟
爱学大树锯6 小时前
【594 · 字符串查找 II】
java·开发语言·算法
zhixingheyi_tian6 小时前
Yarn 之 run job
java·开发语言·前端
2501_916766546 小时前
【Java】代理模式---静态代理与动态代理
java·开发语言·代理模式
写代码的【黑咖啡】6 小时前
Python常用数据处理库全解析
开发语言·python