WinDBG - 符号路径未包含

3
我正在尝试跟踪一个非常大的ASP.NET应用程序中可能存在的内存泄漏。在尝试在现场环境中使用此工具之前,我正在尝试熟悉WinDBG。
我按照以下文章中的说明进行操作,发现这篇文章非常有帮助:http://humblecoder.co.uk/uncategorized/spotting-a-memory-leak-with-windbg-in-net。 我能够创建一个ASP.NET进程的“内存转储”文件,并显示委托是导致内存泄漏的原因,就像文章中所指定的一样。 我参考了文章中开始的那一段:“接下来我们需要符号”。 在 WinDBG 中我没有使用 文件 \ 符号文件路径 添加符号文件,但我似乎仍然可以调试应用程序并完成文章中剩余的步骤。 在一个 ASP.NET 应用程序中不需要符号路径吗?
2个回答

2
因为.NET程序集包含元数据,包括每个方法的名称和参数,所以在获取托管线程的可读堆栈跟踪时不需要符号。
符号提供的一个信息是每个语句的文件名和行号,因此您可以更轻松地确定堆栈跟踪中的哪些帧对应于源代码中的哪些行。

1

正如Michael所说,对于托管代码来说,符号并不是必需的,因为大部分相关信息在运行时作为元数据可用,但如果你要深入研究本地代码,拥有符号非常有用。

对于许多场景,您可以使用.symfix命令,它会告诉WinDbg使用Microsoft的公共符号服务器。这将使您能够访问代码中所有CLR和Win32特定调用的符号。如果您设置了路径,请记得执行.reload命令。

如果您的代码还包括非Microsoft程序集,则需要将相应PDB文件的位置附加到符号路径中。使用.sympath命令进行操作。

要排除符号加载问题,请使用!sym noisy命令。

有关更多信息请参见此处


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接