Line 1,038: |
Line 1,038: |
| | u32[2] | | | u32[2] |
| | Unknown/padding | | | Unknown/padding |
| + | |} |
| + | |
| + | == struct DebugEventInfo == |
| + | |
| + | {| class="wikitable" border="1" |
| + | ! Type |
| + | ! Field |
| + | |- |
| + | | u32 |
| + | | Event type |
| + | |- |
| + | | u32 |
| + | | Thread ID (not used in all events) |
| + | |- |
| + | | u32[2] |
| + | | Unknown/padding |
| + | |- |
| + | | u32[6] |
| + | | Event-specific data (see below) |
| + | |} |
| + | |
| + | {| class="wikitable" border="1" |
| + | ! Event type |
| + | ! Id |
| + | |- |
| + | | PROCESS |
| + | | 0 |
| + | |- |
| + | | CREATE THREAD |
| + | | 1 |
| + | |- |
| + | | EXIT THREAD |
| + | | 2 |
| + | |- |
| + | | EXIT PROCESS |
| + | | 3 |
| + | |- |
| + | | EXCEPTION |
| + | | 4 |
| + | |- |
| + | | DLL LOAD |
| + | | 5 |
| + | |- |
| + | | DLL UNLOAD |
| + | | 6 |
| + | |- |
| + | | SCHEDULE IN |
| + | | 7 |
| + | |- |
| + | | SCHEDULE OUT |
| + | | 8 |
| + | |- |
| + | | SYSCALL IN |
| + | | 9 |
| + | |- |
| + | | SYSCALL OUT |
| + | | 10 |
| + | |- |
| + | | OUTPUT STRING |
| + | | 11 |
| + | |- |
| + | | MAP |
| + | | 12 |
| + | |} |
| + | |
| + | === PROCESS event === |
| + | |
| + | {| class="wikitable" border="1" |
| + | ! Type |
| + | ! Field |
| + | |- |
| + | | u64 |
| + | | Program ID |
| + | |- |
| + | | char[8] |
| + | | Process name |
| + | |- |
| + | | u32 |
| + | | Process ID |
| + | |- |
| + | | u32 |
| + | | 0 = newly created process, 1 = attached process |
| + | |} |
| + | |
| + | === CREATE THREAD event === |
| + | |
| + | {| class="wikitable" border="1" |
| + | ! Type |
| + | ! Field |
| + | |- |
| + | | u32 |
| + | | Creator thread ID |
| + | |- |
| + | | u32 |
| + | | Base address (?) |
| + | |- |
| + | | u32 |
| + | | Entrypoint |
| + | |} |
| + | |
| + | === EXIT THREAD/PROCESS events === |
| + | |
| + | A single u32 reason field is used. |
| + | |
| + | Thread exit reasons: |
| + | {| class="wikitable" border="1" |
| + | ! Reason |
| + | ! Id |
| + | |- |
| + | | (None) |
| + | | 0 |
| + | |- |
| + | | TERMINATE |
| + | | 1 |
| + | |- |
| + | | EXIT PROCESS |
| + | | 2 |
| + | |- |
| + | | TERMINATE PROCESS |
| + | | 3 |
| + | |} |
| + | |
| + | Process exit reasons: |
| + | {| class="wikitable" border="1" |
| + | ! Reason |
| + | ! Id |
| + | |- |
| + | | (None) |
| + | | 0 |
| + | |- |
| + | | TERMINATE |
| + | | 1 |
| + | |- |
| + | | UNHANDLED EXCEPTION |
| + | | 2 |
| + | |} |
| + | |
| + | === EXCEPTION event === |
| + | |
| + | {| class="wikitable" border="1" |
| + | ! Type |
| + | ! Field |
| + | |- |
| + | | u32 |
| + | | Exception type |
| + | |- |
| + | | u32 |
| + | | Exception address |
| + | |- |
| + | | u32 |
| + | | Argument (type-specific) |
| + | |} |
| + | |
| + | Exception types: |
| + | {| class="wikitable" border="1" |
| + | ! Reason |
| + | ! Id |
| + | ! Argument |
| + | |- |
| + | | UNDEFINED INSTRUCTION |
| + | | 0 |
| + | | (None) |
| + | |- |
| + | | (Unknown) |
| + | | 1 |
| + | | (None) |
| + | |- |
| + | | (Unknown, mem-related) |
| + | | 2 |
| + | | Address |
| + | |- |
| + | | (Unknown, mem-related) |
| + | | 3 |
| + | | Address |
| + | |- |
| + | | ATTACH BREAK |
| + | | 4 |
| + | | (None) |
| + | |- |
| + | | BREAKPOINT |
| + | | 5 |
| + | | (None) |
| + | |- |
| + | | USER BREAK |
| + | | 6 |
| + | | User break type |
| + | |- |
| + | | DEBUGGER BREAK |
| + | | 7 |
| + | | (None) |
| + | |- |
| + | | UNDEFINED SYSCALL |
| + | | 8 |
| + | | Attempted syscall ID |
| + | |} |
| + | |
| + | User break types: |
| + | {| class="wikitable" border="1" |
| + | ! Reason |
| + | ! Id |
| + | |- |
| + | | PANIC |
| + | | 0 |
| + | |- |
| + | | ASSERT |
| + | | 1 |
| + | |- |
| + | | USER |
| + | | 2 |
| + | |} |
| + | |
| + | === SCHEDULER/SYSCALL IN/OUT events === |
| + | |
| + | {| class="wikitable" border="1" |
| + | ! Type |
| + | ! Field |
| + | |- |
| + | | u64 |
| + | | Clock tick |
| + | |- |
| + | | u32 |
| + | | Syscall (only for SYSCALL events) |
| + | |} |
| + | |
| + | === OUTPUT STRING event === |
| + | |
| + | {| class="wikitable" border="1" |
| + | ! Type |
| + | ! Field |
| + | |- |
| + | | u32 |
| + | | String address |
| + | |- |
| + | | u32 |
| + | | String size |
| + | |} |
| + | |
| + | === MAP event === |
| + | |
| + | {| class="wikitable" border="1" |
| + | ! Type |
| + | ! Field |
| + | |- |
| + | | u32 |
| + | | Mapped address |
| + | |- |
| + | | u32 |
| + | | Mapped size |
| + | |- |
| + | | u32 |
| + | | MemoryPermission |
| + | |- |
| + | | u32 |
| + | | MemoryState |
| |} | | |} |
| | | |