vs2010 无法找到调试信息 或者调试信息不匹配

来源:互联网 发布:软件企业财务核算 编辑:程序博客网 时间:2024/04/27 09:09

在visual里找到pdb相关的配置选项,共2个如下:

configuration property->c/c++->output files->program database file name

这是编译时产生的pdb文件的输出位置,vs在编译后会将该位置符合$(TargetName).pdb格式的文件复制到configuration property->general的output directory目录中(不知道是哪里的设置起作用),作为运行时debug信息。不过这一pdb文件包含的信息包括类型信息,但不包括函数定义等符号信息。因此,即使每个源文件都包含公共头文件(如 <windows.h>),这些头文件中的 typedef 也只存储一次,而不是在每个 OBJ 文件中都存在(见下面的定义)。因此这个pdb文件是不足以做调试之用的。

configuration property->linker->debugging->generate program database file

这是链接时链接器产生的pdb文件的输出位置,它包含项目的 EXE 文件的调试信息。该 文件包含完整的调试信息(包括函数原型),而不仅仅是在 上一个.PDB 中找到的类型信息。

这两个 PDB 文件都允许增量更新。链接器还在其创建的 .exe 或 .dll 文件中嵌入 .pdb 文件的路径。

对照项目配置,很快发现问题所在。output files->program database file name里设置的文件名符合$(TargetName).pdb的格式,因此被复制到output directory目录中,而linker->debugging->generate program database file设置的文件名也刚好是这个位置,因此就没有被复制进来,所以“鹊巢鸠占”引起的后果是,包含完整调试信息的9mb大的pdb文件没有被如约创建,而1mb大的pdb文件被错误的复制倒了不该放的地方,自然.exe文件就找不到debug信息了。

 

 

配置属性->c/c++->常规->调试信息格式:改为”用于‘编辑并继续’的程序数据库(/ZI)“;

配置属性->c/c++->优化->优化:改为“已禁用(/Od)";

配置属性->c/c++->优化->全程优化:改为”否“;

 

原创粉丝点击