【问题标题】:Do minidump files contain the timestamp of the crash?minidump 文件是否包含崩溃的时间戳?
【发布时间】:2010-03-15 09:52:48
【问题描述】:

小型转储文件中的 MiscInfoStream 包含进程创建时间。我想知道崩溃前该进程运行了多长时间。 minidump 文件是否在任何地方都包含异常时间戳?

此转储文件上的 WinDbg 显示以下内容,这意味着它在某处...

Debug session time: Tue Dec 29 15:49:20.000 2009 (GMT+0)
System Uptime: not available
Process Uptime: 0 days 0:33:03.000

(DumpChk 显示相同的信息,在流列表的末尾)

请注意,今天是 3 月 15 日,因此这几乎可以肯定是崩溃的时间戳。我想要一种编程方式来检索该值和“Process Uptime”值。

我找到了MINIDUMP_MISC_INFO_3 结构,其中包含一些时区信息,但它似乎不包含异常时间。

一些转储文件似乎有一个 ThreadInfoListStream,其中包含进程中每个线程的时间戳,但这不包括在我看到的小型转储中。

【问题讨论】:

    标签: minidump postmortem-debugging


    【解决方案1】:

    您可以使用 dbgeng api 获取崩溃时间和进程启动时间的值。请参阅 Windbg sdk 目录以获取 dumpstk 示例 - 您可以对其进行修改以获取此信息。

    我下面的代码假设您已将系统对象 2 接口的新查询接口添加到新的全局 g_SysObjects 中。

    IDebugSystemObjects2* g_SysObjects;
    

    并将 g_Control 从 IDebugControl 更改为 IDebugControl2。

    #include <time.h>
    void DumpUpTimeAndCrashTime()
    {
        ULONG upTime = 0;
    
        g_SysObjects->GetCurrentProcessUpTime(&upTime);
        int days = upTime / (60*60*24);
        int hours = (upTime % (60*60*24)) / (60*60);
        int minutes = (upTime % (60*60))/60;
        int seconds = upTime % 60;
        printf("Process uptime %d days %02d:%02d:%02d.000\n", 
                days, hours, minutes, seconds);
    
        ULONG crashTime = 0;
        g_Control->GetCurrentTimeDate(&crashTime);
        time_t ct = crashTime;
        printf( "Crash time and date: %s", _ctime64( &ct ) );
    }
    

    【讨论】:

      【解决方案2】:

      我认为异常的时间不会存储在 minidump 文件中的任何位置。异常结构当然不包含此信息: http://msdn.microsoft.com/en-us/library/ms680367%28VS.85%29.aspx

      misc info 结构包含进程开始时间,但不包含异常时间: http://msdn.microsoft.com/en-us/library/ms680389%28VS.85%29.aspx

      您可以在此处查看小型转储的所有可能内容: http://msdn.microsoft.com/en-us/library/ms680394%28v=VS.85%29.aspx

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-04-03
        • 1970-01-01
        • 1970-01-01
        • 2019-11-10
        • 2023-03-30
        • 1970-01-01
        相关资源
        最近更新 更多