【发布时间】:2013-10-22 04:16:47
【问题描述】:
我有一个使用 SCons 和 MS VS 2013 (express) 编译器(从命令行编译)构建的项目。
它可以编译并运行,但是它会定期崩溃,所以我想调试它。
我添加了以下标志:
/Zi # Debug symbols
/DEBUG # Debug symbols
/FS # Concurrent debug database file access
构建后,我看到生成了一个名为 vc120.pdb 的 pdb 文件。我的可执行文件位于build 文件夹中,pdb 文件位于项目主目录中。
但是,当我尝试通过 VS2013 或 WinDbg 附加我的可执行文件以进行调试时,我总是收到无法找到调试符号的错误。
我在 VS2013 和 WinDbg 中都将“路径”添加到 pdb 文件中,但我得到了相同的结果。我还尝试将pdb 文件复制到build 目录中(使其在我的可执行文件旁边),但没有骰子。我什至更改了pdb 文件的名称以匹配我的可执行文件的名称,但这也不起作用。
这里有什么我遗漏的吗?
【问题讨论】:
-
vc120.pdb 看起来不像您的程序 pdb 文件。它应该是 program_name.pdb。
-
我认为您应该更详细地描述您的项目设置。另外:有一个链接器选项指定输出 PDB 文件的名称和路径 - 检查。
-
@AlexFarber - 在 Visual Studio 中生成的默认 PDB 文件一般为
vc<tools version>.pdb。我总是将其重命名为$(ProjectName).pdb,因为它可以减少出现此类错误的可能性。 -
要获取有关问题的更多信息,您可以尝试使用 windbg 中的
!sym noisy选项,如下所述:stackoverflow.com/questions/2002285/… -
@the_mandrill:Visual Studio 生成
$(ProjectName).pdb和vc<tools version>.pdb。如果没有生成$(ProjectName).pdb,说明项目设置有问题。
标签: c++ visual-studio debugging