如何更改源文件的位置在

问题描述:

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

您可以使用Windows调试工具,这将在你的源代码库保存到文件的适当修改,引用作为PDB文件的备用流的源索引功能。

+3

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

如果您希望更加通用地了解pdb文件中嵌入的路径,可以先使用MS-DOS subst命令将特定文件夹映射到驱动器号。

subst N: <MyRealPath> 

然后打开您的项目相对于N:驱动器并重建它。您的PDB文件将引用N:上的源文件。现在,放置该特定源文件集的位置并不重要,只要您随后调用根目录“N:”,就像在创建它时一样。

这种做法是由约翰·罗宾斯在他的优秀著作,Debugging Applications for Microsoft .NET and Microsoft Windows建议。

这当然是可能的,因为在弗氏已经指出。 但如果只是这样的来源可以位于和调试过程中加载,然后更好的办法是设置相应的源路径。一旦设置在调试器中,它将抢占PDB内的所有硬编码路径。

在WinDbg中(例如):

.srcpath + path_to_source_root
或本(如果你是远程调试):
.lsrcpath + path_to_source_root

我想找到为了调试在我的机器上没有构建的可执行文件中发生的故障转储,应答如下,因此PDB中引用的源代码的路径无效, PDB在可执行文件中引用。

经过四处搜索,找不到有效的东西,我发现如果将可执行文件和PDB放在崩溃转储文件(即在同一目录中)旁边,然后打开并在VS中运行崩溃转储,VS会找到并在本地使用PDB/EXE。此外,它还会在点击调用堆栈中的条目时提示源代码的位置:将它指向与源代码相关的任何源代码,它都可以正常工作,这非常棒!

不管怎么说,希望这可以帮助别人... :)