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、相关地址🐐

相关推荐
啊董dong5 分钟前
noi-2026年5月12号小测验
数据结构·c++·算法
idingzhi7 分钟前
A股量化策略日报(2026年05月22日)
android·开发语言·python·kotlin
小短腿的代码世界27 分钟前
Qt国际化深度解析:从源码到企业级多语言实践
java·数据库·qt
江上清风山间明月33 分钟前
如何将python开发的window应用打包成exe
开发语言·python·exe·打包
SXJR38 分钟前
Java中的Cross-Encoder模型解决方案
java·开发语言
咩咦41 分钟前
C++学习笔记24:构造函数初始化列表
c++·学习笔记·类和对象·构造函数·初始化列表·const引用
彦为君1 小时前
JavaSE-11-BIO/NIO/AIO(多人聊天室)
java·开发语言·python·ai·nio
为何创造硅基生物1 小时前
C 语言 typedef 结构体私有化
c语言·开发语言·算法
计算机安禾1 小时前
【c++面向对象编程】第43篇:可变参数模板(C++11):优雅处理不定长参数
java·开发语言·c++
Hanniel1 小时前
Python __slots__ 入门指南
开发语言·python·性能优化