ClrMD获取内存转储时间

时间:2014-06-18 07:44:57

标签: windbg dump memory-dump clrmd

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

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

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

1 个答案:

答案 0 :(得分:4)

我找到了以下解决此任务的方法,但它仅限制我们使用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日期时间(或附加时间)。

  5. 对我来说效果很好:)。