繁体   English   中英

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

How do I change the locations of source files in a symbols file (pdb)

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

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

4 个回复

您可以使用Windows调试工具的源索引功能,该功能将保存对源存储库中文件的相应修订的引用,作为PDB文件中的备用流。

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

subst N: <MyRealPath>

然后打开相对于N:驱动器的项目并重建它。 您的PDB文件将引用N:上的源文件。 现在,无论您放置哪一组特定的源文件都无关紧要,只要您随后调用根目录“N:”就像您构建它时一样。

John Robbins在其出色的书“Microsoft .NET的调试应用程序”和Microsoft Windows中推荐了这种做法。

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

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

无论如何,希望这有助于其他人...... :)

正如On Freund已经指出的那样,这当然是可能的。 但是,如果仅在调试期间可以定位和加载源,那么更好的方法是相应地设置源路径。 一旦设置在调试器中,它将预先显示PDB内的所有硬编码路径。

在windbg中(例如):

.srcpath + path_to_source_root
或者这个(如果您正在远程调试):
.lsrcpath + path_to_source_root

2 CLR如何定位pdb符号文件

我想知道CLR如何定位pdb符号文件,以及是否可以覆盖此行为。 我在线查看(MSDN和其他资源),但找不到一个好的答案。 在我的应用程序中,我有DLL放在主.EXE路径的几个子目录中。 我想有一个Symbols \\ dir,它将包含我的应用程序的所有符号。 默认情况下,我相 ...

3 gcc如何生成调试符号文件.pdb?

我试图在google上找到如何为使用cygwin64编译的应用程序生成pdb文件,但我无法使其工作,这就是我的make文件的样子: 我发现这个命令“应该”在编译后生成pdb文件:-export-all-symbols =“sample.pdb”但它没有,我需要使用cygwin生成pdb文 ...

4 Xcode符号文件位置

Xcode是否输出符号文件,或者可能生成一个符号文件? 我们正在以自己的格式从设备中捕获自己的崩溃报告,并希望对其进行符号化,因此与等待Apple提供崩溃报告相比,我们可以更快地进行周转。 ...

6 符号文件MyFile.pdb与模块不匹配

我在这个问题上进行了搜索,发现了很多口味和想法,但没有真正的解决方案。 所以,穿上我的石棉衣服,并希望最好的,我要再问一次。 我已经托管了C#代码,该代码调用了托管C ++代码,而托管C ++代码又调用了非托管C ++代码。 非托管C ++代码引发了异常,我希望能够通过它进行调试。 ...

10 符号文件中没有本机符号

我正在尝试使用VS2008远程调试Windows Form应用程序。 附加到进程工作正常(远程(仅本地,不带身份验证)),但是当我打开模块窗口并尝试加载符号时,在符号文件中没有任何本地符号。 我意识到这与应用程序的构建方式有关,但无法确定是什么? ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM