事件信息

只要调试会话可访问,就会有最后 一个事件。 这是导致会话变得可访问的事件。 事件目标是生成最后一个事件的目标。 当会话变为可访问时,当前目标将设置为事件目标。 最后一个事件的详细信息由 GetLastEventInformation 返回。 最后一个事件的指令指针以及发生事件时在指令指针上的内存由 Request 操作返回DEBUG_REQUEST_GET_CAPTURED_EVENT_CODE_OFFSET DEBUG_REQUEST_READ_CAPTURED_EVENT_CODE_STREAM。

如果目标是故障转储文件,则最后一个事件是创建转储文件之前发生的最后一个事件。 此事件存储在转储文件中,当转储文件作为调试目标获取时,引擎会为事件回调生成该事件。

如果目标是内核模式目标并发生 bug 检查,可以使用 ReadBugCheckData 找到 bug 检查代码和相关参数。

如果目标是用户模式 Minidump,则转储文件生成器可能会存储其他事件。 通常,这是导致生成器保存转储文件的事件。 此事件的详细信息由 GetStoredEventInformation 以及请求操作DEBUG_REQUEST_TARGET_EXCEPTION_CONTEXT、DEBUG_REQUEST_TARGET_EXCEPTION_THREADDEBUG_REQUEST_TARGET_EXCEPTION_RECORD

转储文件可能包含静态事件列表。 每个事件都表示特定时间点的目标快照。 此列表中的事件数由 GetNumberEvents 返回。 有关列表中每个事件的说明,请使用 GetEventIndexDescription。 若要将此列表中的事件设置为当前事件,请使用 SetNextEventIndex 方法;调用 WaitForEvent 后,该事件将成为当前事件。 若要确定列表中的哪个事件是当前事件,请使用 GetCurrentEventIndex