2008-08-26 32 views
16

基本上我想這樣做,這是一個符號文件(PDB):PDB文件包含源文件的位置(例如C:\dev\proj1\helloworld.cs)。是否可以修改該pdb文件,使其包含不同的位置(例如\more\differenter\location\proj1\helloworld.cs)?如何更改源文件的位置在

回答

11

您可以使用Windows調試工具,這將在你的源代碼庫保存到文件的適當修改,引用作爲PDB文件的備用流的源索引功能。

+3

http://msdn.microsoft.com/en-us/library/ms680641.aspx – 2008-11-05 16:33:52

7

如果您希望更加通用地瞭解pdb文件中嵌入的路徑,可以先使用MS-DOS subst命令將特定文件夾映射到驅動器號。

subst N: <MyRealPath> 

然後打開您的項目相對於N:驅動器並重建它。您的PDB文件將引用N:上的源文件。現在,放置該特定源文件集的位置並不重要,只要您隨後調用根目錄「N:」,就像在創建它時一樣。

這種做法是由約翰·羅賓斯在他的優秀著作,Debugging Applications for Microsoft .NET and Microsoft Windows建議。

1

這當然是可能的,因爲在弗氏已經指出。 但如果只是這樣的來源可以位於和調試過程中加載,然後更好的辦法是設置相應的源路徑。一旦設置在調試器中,它將搶佔PDB內的所有硬編碼路徑。

在WinDbg中(例如):

.srcpath + path_to_source_root
或本(如果你是遠程調試):
.lsrcpath + path_to_source_root

2

我想找到爲了調試在我的機器上沒有構建的可執行文件中發生的故障轉儲,應答如下,因此PDB中引用的源代碼的路徑無效, PDB在可執行文件中引用。

經過四處搜索,找不到有效的東西,我發現如果將可執行文件和PDB放在崩潰轉儲文件(即在同一目錄中)旁邊,然後打開並在VS中運行崩潰轉儲,VS會找到並在本地使用PDB/EXE。此外,它還會在點擊調用堆棧中的條目時提示源代碼的位置:將它指向與源代碼相關的任何源代碼,它都可以正常工作,這非常棒!

不管怎麼說,希望這可以幫助別人... :)