【问题标题】:WinDBG - Symbols path not includedWinDBG - 不包括符号路径
【发布时间】:2012-06-24 14:31:50
【问题描述】:

我正在尝试跟踪一个非常大的 ASP.NET 应用程序中可能存在的内存泄漏。在尝试在实际环境中使用此工具之前,我正在尝试熟悉 WinDBG。

我已按照以下文章中的说明进行操作,我发现这很有帮助:http://humblecoder.co.uk/uncategorized/spotting-a-memory-leak-with-windbg-in-net。我能够创建 ASP.NET 进程的“内存转储”文件,并显示委托正在导致文章中指定的内存泄漏。我指的是文章中开头的段落:“接下来我们需要符号”。我没有使用 File\Symbol File Path 添加符号文件;在 WinDBG 中,但我似乎仍然能够调试应用程序并按照本文的其余步骤进行操作。 ASP.NET 应用程序不需要符号路径吗?

【问题讨论】:

    标签: asp.net debugging windbg


    【解决方案1】:

    因为 .NET 程序集包含元数据,包括每个方法的名称及其参数,所以符号不是获取托管线程的可读堆栈跟踪所必需的。

    符号可以提供的一件事是每个语句的文件名和行号,因此您可以更轻松地确定堆栈跟踪中的哪些帧对应于源代码中的哪些行。

    【讨论】:

      【解决方案2】:

      正如 Michael 所说,符号对于托管代码并不是绝对必要的,因为大多数相关信息在运行时都可以作为元数据使用,但是如果您正在研究本机代码,那么拥有符号非常有用。

      对于许多情况,您只需执行 .symfix 即可告诉 WinDbg 使用 Microsoft 的公共符号服务器。这将使您能够访问代码中所有 CLR 和 Win32 特定调用的符号。如果你设置了路径,记得做一个.reload

      如果您的代码也包含本机非 Microsoft 程序集,则需要将相应 PDB 文件的位置附加到符号路径。为此使用.sympath 命令。

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

      更多信息see this

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-09-10
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多