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