2014-05-09 70 views
1

我已經搜索了一下,並調查了一會兒這個問題,但沒有成功。我目前正在使用Visual Studio 2010 C++解決方案,並在Windows上運行生成的可執行文件。該解決方案有多種配置,其中一些代碼和庫是特定於配置的,但一般框架在所有配置之間共享。在某些配置VS 2010的特定項目上缺少符號

我遇到的問題是,對於調用堆棧的某個配置部分,符號不顯示!缺少的符號位於特定的靜態庫上,似乎對該庫的所有引用都是一致的。此外,lib是在配置之間共享的,並且它的符號在其他配置中正確顯示。

所以我想找出可能的原因是什麼。如果有人在過去經歷過這種情況?

如果我點擊「符號加載信息」,我會在工作和錯誤配置中獲得相同的結果,這是可執行文件的pdb路徑。因此,出於某種原因,這個特定庫的符號似乎不包含在pdb中。然而,生成lib的個人pdb。即使許多sbr文件都是空的,也會生成bsc和sbr文件。

所以我會很高興如果有人知道如何解決這個問題或有想法的事情我應該嘗試或尋找?

非常感謝!

回答

0

靜態庫的PDB必須在鏈接可執行文件時與靜態庫本身在同一目錄中可用。否則,它的調試信息將不會被合併到可執行文件的PDB中。 (在調試會話期間,不可能直接使用靜態庫PDB。)

如果要使事情更可靠,請確保將靜態庫設置爲項目間參考,而不是它作爲「項目依賴」。您不應手動將庫名稱放入可執行文件的鏈接器輸入中。

+0

謝謝Sneftel。不幸的是,它並沒有幫助我的情況:(我改變了,所以靜態庫的所有pdbs都位於它們的庫旁邊,我也嘗試使用引用而不是依賴關係。奇怪的是,其他庫無法正確顯示符號它們的pdbs位於哪裏,或者它們是否使用了依賴關係或引用。對於這個特定的lib有沒有不同的設置?我找不到它可能是哪一個。 – user3619622