2

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

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

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

4

1 回答 1

4

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

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

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

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

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

它对我来说效果很好:)

于 2014-08-06T12:24:09.597 回答