1

我已经用谷歌搜索并调查了这个问题一段时间,但没有成功。我目前正在使用 Visual Studio 2010 C++ 解决方案,生成的可执行文件在 Windows 上运行。该解决方案具有多种配置,其中一些代码和库是特定于配置的,但通用框架在所有配置之间共享。

我遇到的问题是,对于调用堆栈的某个配置部分,符号没有出现!缺少的符号位于特定的静态库上,并且对于对该库的所有引用似乎都是一致的。此外,该库在配置之间共享,并且它的符号在其他配置中正确显示。

所以我想找出这可能是什么原因。过去是否有人经历过这种情况?

如果我单击“符号加载信息”,我会在工作配置和错误配置中得到相同的结果,即可执行文件的 pdb 路径。所以由于某种原因,这个特定库的符号似乎没有包含在 pdb 中。但是,会生成 lib 的单个 pdb。即使很多 sbr 文件是空的,也会生成 bsc 和 sbr 文件。

因此,如果有人知道如何解决此问题或对我应该尝试或注意的事情有想法,我会很高兴?

非常感谢!

4

1 回答 1

0

在链接可执行文件时,静态库的 PDB 必须可用并且与静态库本身位于同一目录中。否则,其调试信息将不会并入可执行文件的 PDB。(在调试会话期间不能直接使用静态库 PDB。)

如果您想让事情变得更可靠,请确保将静态库设置为项目间引用,而不是将其作为“项目依赖项”。您不应手动将库名称放入可执行文件的链接器输入中。

于 2014-05-09T11:07:04.620 回答