【问题标题】:DebugDiag: How to inject LeakTrack.dll manuallyDebugDiag:如何手动注入 LeakTrack.dll
【发布时间】:2017-03-20 02:00:23
【问题描述】:

我有一个来自生产的故障转储来识别内存泄漏。当我使用 DebugDiag (v2 update 2) 时,我得到一个报告

DebugDiag 没有检测到 w3wp.DMP 中加载的 LeakTrack.dll,所以没有泄漏 对此文件进行了分析。如果您正在排除故障 内存泄漏,请确保将 LeakTrack.dll 注入目标 在生成新转储之前使用 DebugDiag 工具进行处理

。我无法找到从 DebugDiag UI 或阅读文档后注入 LeakTrack.dll 的方法。如何手动注入 LeakTrack.dll?

【问题讨论】:

    标签: asp.net .net memory-leaks crash-dumps debugdiag


    【解决方案1】:

    在 Debug Diag 安装文件夹中,应该有一个DebugDiag.Collection.exe。如果您运行它,请选择 Cancel,然后切换到进程选项卡。选择您的流程,然后从上下文菜单中选择“监控泄漏”。这将注入 DLL。

    【讨论】:

    • 您建议的方式要求我在客户的机器上安装 debugdiag 并进行转储。看起来有一种方法可以将 LeakTrack.dll 注入到已经采取的转储中。这就是我想知道的。
    • @frosty:绝对不可能将 DLL 注入到转储中。这只能在运行时实现
    • 即使有可能,也无济于事,因为它已经什么都做不了了。该 DLL 被注入到正在运行的进程中,因为它应该做一些需要 CPU 指令的事情。转储不再提供 CPU 时间。
    • @ThomasWeller 你知道为什么 DebugDiag 不允许为尚未启动的进程设置内存泄漏规则吗?为什么它要求它首先运行?记录了我想监控的EXE的详细信息后不能注入DLL吗?
    • @ForeverLearning:不知道为什么没有这样的功能,只能猜测。 DebugDiag 和 LeakTrack.dll 非常具有侵入性。如果想从应用程序启动时发现内存泄漏,我想有人会使用 UST(用户模式堆栈跟踪数据库,可以使用 GFlags 启用)和 UMDH。
    猜你喜欢
    • 2018-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-17
    • 1970-01-01
    • 2018-10-22
    • 2021-03-12
    • 1970-01-01
    相关资源
    最近更新 更多