2016-11-15 67 views
0

我得到了一些編譯的C++庫(.lib,不是我自己編譯的),我鏈接到自己的C++項目中。我也得到了源代碼。步入鏈接庫的源代碼

是否有可能在調試時使用源代碼進入這些庫的函數?我如何告訴Visual Studio調試器使用這些源代碼文件?

我想.lib文件需要某種調試信息 - 我可以找出他們是否得到這些?

+0

[Pretty close](http://stackoverflow.com/questions/4316801/pointing-visual-studio-2008-to-the-source-code-of-a-third-party-dll-for-debuggin) ,但也許我會找到一個更好的。 –

+0

[也非常接近](http://stackoverflow.com/questions/2620279/visual-studio-attach-source-code-to-reference),但錯誤的語言。你能否檢查一下對C++是否也適用? –

回答

2

Microsoft編譯器將調試信息存儲在單獨的.pdb文件中。當VS加載可執行文件使用的庫(例如myLib)(通過附加到正在運行的實例或直接在調試器下啓動它)時,它還會搜索myLib.pdb。如果它發現它,當你試圖進入這樣一個功能時,它會首先詢問你對應的源的位置。如果正確提供,您將能夠對其進行調試。

沒有.pdb文件,我不知道任何方式在源代碼級調試外部庫。

此外,如果沒有.pdb文件,但您確實有外部庫的源代碼,是否可以使用調試符號(.pdb文件)重新構建它?

+0

其實我目前正在嘗試重建它們以獲得匹配的PDB文件。但需要一些實驗,因爲我不知道用於編譯的二進制文件的選項。我成功後會回來。 – ZoolWay

+0

@ZoolWay,如果喬治Spatacean的回覆對你有幫助,如果可能的話,請將其標記爲答案,這可以幫助其他社區成員遇到同樣的問題,因爲你:) –

+0

好吧,我設法重建它(WebRTC原生是相當複雜的)。所以我得到了'lib'和'pdb'文件。即使我使用* Step into特定*,它也不會進入源代碼。猜猜這不適用於混合調試器 - 這是託管和非託管代碼混合。 – ZoolWay