我已经在谷歌上搜索并调查了这个问题一段时间,但没有成功。我目前正在使用visual studio 2010 C++解决方案,其可执行文件运行在windows上。该解决方案具有多个配置,其中一些代码和库是特定于配置的,但通用框架在所有配置之间共享。
我遇到的问题是,对于调用堆栈的某个配置部分,符号没有显示!丢失的符号位于特定的静态库上,并且似乎对于所有对该库的引用都是一致的。此外,该库在配置之间共享,并且它的符号在其他配置中正确显示。
所以我想找出这可能是什么原因。如果有人在过去经历过这种情况?
如果我点击“Symbol Load Information”,我会在工作配置和错误配置中得到相同的结果,即可执行文件的pdb路径。因此,由于某种原因,似乎该特定lib的符号没有包含在pdb中。但是,该lib的单个pdb会生成。即使许多sbr文件是空的,bsc和sbr文件也会生成。
所以如果有人知道如何解决这个问题,或者对我应该尝试或注意的事情有想法,我会很高兴吗?
多谢了!
1条答案
按热度按时间btxsgosb1#
静态库的PDB必须可用,并且在链接可执行文件时与静态库本身位于同一目录中。否则,其调试信息将不会合并到可执行文件的PDB中。(在调试会话期间不可能直接使用静态库PDB。)
如果你想让事情变得更可靠,请确保将静态库设置为项目间引用,而不是将其设置为“项目依赖项”。你不应该手动将库名称放在可执行文件的链接器输入中。