如何更改符号文件(pdb)中源文件的位置

时间:2020-03-05 18:43:17  来源:igfitidea点击:

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

解决方案

回答

如果我们希望对pdb文件中嵌入的路径更加通用,则可以首先使用MS-DOSsubst命令将特定文件夹映射到驱动器号。

subst N: <MyRealPath>

然后相对于N:驱动器打开项目并重新生成它。PDB文件将引用N:上的源文件。现在,将这组特定的源文件放置在什么位置都无所谓,只要我们随后像创建它时一样将根目录称为" N:"即可。

约翰·罗宾斯(John Robbins)在其出色的著作《为Microsoft .NET和Microsoft Windows调试应用程序》中推荐了这种做法。

回答

我们可以使用Windows调试工具的源索引功能,该功能会将对源存储库中文件的适当修订的引用保存为PDB文件中的备用流。

回答

正如On Freund已经指出的那样,这肯定是可能的。
但是,如果只是在调试过程中可以定位和加载源代码,那么更好的方法是相应地设置源代码路径。一旦在调试器中设置,它将在PDB中预先包含所有硬编码的路径。

在windbg中(例如):

.srcpath+ path_to_source_root

或者此(如果我们要远程调试):

.lsrcpath+ path_to_source_root