zoukankan      html  css  js  c++  java
  • Microsoft Visual Studio PDB文件相关事宜

     Microsoft Visual Studio PDB:调试的符号文件,程序数据库 (PDB) 文件保存着调试和项目状态信息,使用这些信息可以对程序的调试配置;

      当以 /ZI 或 /Zi(用于 C/C++)生成时,将创建一个 PDB 文件。

      在 Visual C++ 中,/Fd 选项用于命名由编译器创建的PDB 文件。

      当使用向导在Visual Studio 中创建项目时,/Fd 选项被设置为创建一个名为 project.PDB 的 PDB。

      如果使用生成文件创建 C/C++ 应用程序,并指定 /ZI 或 /Zi 而不指定 /Fd 时,则最终将生成两个 PDB 文件

      具体分两种情况(引用摘自网络):

      1、构建静态库时,可在工程属性 –> C/C++ –> 输出文件 –> 程序数据库名 设置生成的pdb文件名称,如果不指定,默认是生成为VCx0.pdb,这里x是VS版本号,例如用VS2008,就会生成VC90.pdb。编译静态库时默认生成的.pdb文件名字都一样,引用这个静态库的项目能找到正确的.pdb,因VS会在生成的文件中嵌入 .pdb 文件的路径。

      举个例子,在ToolA下,构建了一个静态库ToolA.lib,对应生成一个vc90.pdb,同样在在ToolB下,构建了一个静态库ToolB.lib,对应生成一个vc90.pdb。最终的工程Work.exe同时链接了这两个静态库.这时,生成Work.pdb的时候,就会在ToolA.lib中找到它对应的符号文件路径ToolA/vc90.pdb,以及ToolB.lib对应的符号文件路径ToolB/vc90.pdb,合并生成最终工程的Work.pdb。

      2、构建可执行文件或动态库时,编译期会生成一个.pdb文件,链接期也会生成一个.pdb文件,编译期生成的pdb文件可以在工程属性 –> C/C++ –> 输出文件 –> 程序数据库名 中设置,链接期生成的.pdb文件可在工程属性–>链接器–>调试–> 生成调试信息(设置Yes),生成程序数据库名设置。

     

      编译期生成的pdb文件,默认也是用vcx0命名,是编译器在编译过程中,把每个.obj文件对应的符号信息存储在其中的,但不包括函数定义。而链接期生成的.pdb文件,默认使用工程名命名,是链接器在链接工程时,根据编译器生成的vcx0.pdb再进一步加工出来的,具有完整信息的符号文件。就像链接器根据各个.obj文件生成exe或dll一样,编译期生成的.pdb文件是编译-链接过程的中间产物,最后用于调试程序的是链接期生成的ProjectName.pdb

      Visual Studio 调试器或其他调试工具在调试时,使用 EXE 或 DLL 文件中的PDB 路径查找 project.PDB 文件。如果调试器在该位置无法找到 PDB 文件或者如果路径无效,调试器将搜索包含 EXE 的路径或者dll的同级目录;如工程是别人编写的,则应连同符号文件一起,我们只要把符号文件与exe或者dll放在同级目录,调试器也能找到它;在调试器中也可以自己指定符号文件路径;

      调试器不会加载与所调试的二进制不匹配的 PDB文件。

      

  • 相关阅读:
    EJB>复合主键(Composite Primary Key)
    EJB>消息驱动beanTopic 消息的发送与接收(Pub/sub 消息传递模型)
    JSF>自订验证器
    EJB>自定义安全域
    EJB>Entity 的生命周期和状态、回调函数
    EJB>安全服务的具体开发
    单片机的中断系统
    JavaScript代码检查工具——JSLintMate
    如何开发一个 N9 上的程序
    NSIS安装制作基础教程
  • 原文地址:https://www.cnblogs.com/haomiao/p/5812865.html
Copyright © 2011-2022 走看看