我正在使用CLR 内存诊断工具来分析内存转储。
使用 WinDBG 打开转储,我可以使用.time
命令获取调试会话时间(捕获转储时)。
有人知道 ClrMD API 来获取日期吗?
我找到了解决此任务的以下方法,但是它仅将我们限制为 DbgEng 使用。
打开转储文件并指定 DbgEng(因此将使用 IDebugClient)
DataTarget.LoadCrashDump(pathToMemoryDumpFile, CrashDumpReader.DbgEng));
使用IDebugControl2
COM 接口获取目标时间(确保在启动会话的同一线程上执行该操作):
uint secondsSinceUnix;
var dbgCtrl2 = (IDebugControl2)sessionContext.DataTarget.DebuggerInterface;
dbgCtrl2.GetCurrentTimeDate(out secondsSinceUnix);
使用此处描述的方法转换secondsSinceUnix
为 DateTime 。
作为输出,您将获得内存转储创建(或附加时间)的 UTC 日期时间。
它对我来说效果很好:)