实际加载pdb文件的时间

本文关键字:时间 文件 pdb 加载 | 更新日期: 2023-09-27 18:21:58

在Visual Studio中执行"调试"生成时,它会输出一个pdb文件,以便在发生异常时获得详细信息。

pdb文件中的信息是在运行可执行文件时实际加载的,还是在异常发生时加载的?

实际加载pdb文件的时间

IDA等解压缩程序在分析可执行文件时加载符号文件,或者当您告诉它用可执行文件加载特定符号时,只要它与当前正在调试的可执行文件匹配。

Visual Studio调试器等调试器在开始调试时加载PDB文件和符号,而不是在发生异常时加载。

PDB文件上的MSDN页面进一步强调了这一点:

Visual Studio调试器使用该项目。由创建的PDB文件链接器,并将PDB的绝对路径嵌入EXE或DLL文件。如果调试器在该位置找不到PDB文件,或者如果路径无效(例如,如果项目被移动到另一台计算机)、调试器搜索包含EXE的路径,在解决方案的属性页中指定的符号路径(公用属性文件夹,调试符号文件页面)。调试器不会加载与正在调试的二进制文件不匹配的PDB。

当然,如果程序是在没有/debug的情况下编译的,则PDB文件的路径将不会包含在生成的exe或DLL中。

是的,它们是在VS之外加载的。如果你的代码在加载PDB时崩溃,你会看到源代码的位置和行号。