【问题标题】:ClrMD Get Memory Dump timeClrMD 获取内存转储时间
【发布时间】:2014-06-18 07:44:57
【问题描述】:

我正在使用CLR Memory Diagnostics 工具来分析内存转储。

使用 WinDBG 打开转储,我可以使用.time 命令获取调试会话时间(捕获转储时)。

有人知道获取日期的 ClrMD API 吗?

【问题讨论】:

  • 如果您热衷于自己做一些工作,您可以调整 DumpReader 类以包含 SystemInfo minidump 流并从那里获取该信息。

标签: windbg dump memory-dump clrmd


【解决方案1】:

我找到了解决此任务的以下方法,但是它限制了我们只能使用 DbgEng。

  1. 打开转储文件并指定 DbgEng(因此将使用 IDebugClient)

    DataTarget.LoadCrashDump(pathToMemoryDumpFile, CrashDumpReader.DbgEng));
    
  2. 使用IDebugControl2 COM 接口获取目标时间(确保在启动会话的同一线程上执行该操作):

    uint secondsSinceUnix;
    var dbgCtrl2 = (IDebugControl2)sessionContext.DataTarget.DebuggerInterface;
    dbgCtrl2.GetCurrentTimeDate(out secondsSinceUnix);
    
  3. 使用here 描述的方法将secondsSinceUnix 转换为DateTime。

  4. 作为输出,您将获得内存转储创建的 UTC 日期时间(或附加时间)。

对我来说效果很好:)

【讨论】:

    猜你喜欢
    • 2020-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-14
    • 2011-06-03
    • 2011-08-28
    • 1970-01-01
    相关资源
    最近更新 更多