调试C#代码时符号问题(Symbol issue when debugging C# code)

2019-07-22 03:29发布

我使用的WinDbg加载托管代码(C#, 所有CPU内置控制台应用程序)崩溃转储,并在x64平台上创建一个崩溃转储。 我调试在x64平台。 我已经把相关的PDB文件到符号路径。

但WinDbg中总能找到一种奇怪的文件夹中的符号。 下面是一个例子(当我使用了SYM吵!):

SYMSRV:  c:\MySymbols\FooService.pdb\4311207E2E2D442CB7473828D2488F941\FooService.pdb not found

我的应用程序被称为FooService.exe和相关PDB文件被命名为FooService.pdb 。 我已将C:\MySymbols作为符号路径和复制FooService.pdb到目录C:\MySymbols 。 但是,为什么WinDbg中找不到FooService.pdbC:\MySymbols ,而是从一个陌生的子文件夹,“FooService.pdb \ 4311207E2E2D442CB7473828D2488F941”?

在我的情况下,为了加载PDB符号文件,什么是最好的解决方案(我必须创建子文件夹FooService.pdb\4311207E2E2D442CB7473828D2488F941通过自己手动)?

Answer 1:

我相信路径怪一部分用于在符号缓存版本的PDBS。 作为高速缓存,可用于多种应用,包括不同版本的同一应用程序中的符号下载需要做一些事情,让他们分开的。

您可以强制符号装载机利用忽略任何缓存副本.reload /fo命令。 用组合.sympath你应该能够成立加载选项。 一个简单的方法到本地路径添加到符号路径是.sympath+ <PATH> 之后做了.reload /fo忽略任何以前缓存PDBS。

编辑:我改变了我的回答平静了一点,因为我相信我最初误解你的问题。 我希望这个更新是比较有用。



文章来源: Symbol issue when debugging C# code