什么时候实际加载pdb文件

时间:2013-07-11 21:03:06

标签: c# c++ visual-studio pdb

在Visual Studio中执行“调试”构建时,它会输出一个pdb文件,以便在发生异常时获取详细信息。

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

2 个答案:

答案 0 :(得分:1)

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

调试器(如Visual Studio调试器)一旦开始调试就会加载PDB文件和符号,而不是在发生异常时加载。

The MSDN page on PDB files进一步强调了这一点:

  

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

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

答案 1 :(得分:0)

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