KDebug: Difference between revisions
No edit summary |
No edit summary |
||
(9 intermediate revisions by the same user not shown) | |||
Line 37: | Line 37: | ||
| 0x1C | | 0x1C | ||
| u8 | | u8 | ||
| Indicates | | Indicates an ATTACH PROCESS event has been signaled to this object | ||
|- | |- | ||
| 0x1D | | 0x1D | ||
| u8 | | u8 | ||
| Debug string length >> 31 | | Debug string length >> 31, always 0 | ||
|- | |- | ||
| 0x1E | | 0x1E | ||
| u8 | | u8 | ||
| Indicates that a debug event is currently being signaled to this object | | Indicates that a debug event is currently being signaled to this object | ||
|- | |||
| 0x1F | |||
| u8 | |||
| Indicates that the parent process is paused (using svcBreakDebugProcess). | |||
svcContinueDebugEvent will ignore all debug events other than EXIT PROCESS, and some other debug SVCs will return an error. | |||
|- | |- | ||
| 0x20 | | 0x20 | ||
| [[SVC|DebugEventType]] | | [[SVC|DebugEventType]] | ||
| Type of the latest debug event | | Type of the latest debug event | ||
|- | |||
| 0x24 | |||
| u32 | |||
| Unknown, probably unused | |||
|- | |- | ||
| 0x28 | | 0x28 | ||
| [[KThread]] * | | [[KThread]] * | ||
| Thread | | Thread having exclusive access to this object | ||
|- | |- | ||
| 0x2C | | 0x2C | ||
| u32 | | u32 | ||
| Debug event flags set by svcContinueDebugEvents | | Debug event flags set by svcContinueDebugEvents | ||
Bit0: | Bit0: no exception dumps are made if this is set. | ||
Bit1 and following: report EXCEPTION (this flag is bypassed for svc 0xFF), SCHEDULE, SYSCALL, MAP debug events, respectively. | |||
|- | |- | ||
| 0x30 | | 0x30 | ||
Line 66: | Line 76: | ||
| 0x34 | | 0x34 | ||
| u32 | | u32 | ||
| Count of KEventInfo object nodes associated with this KDebug object | | Count of KEventInfo object nodes to be fetched with svcGetProcessDebugEvent (associated with this KDebug object) | ||
|- | |- | ||
| 0x38 | | 0x38 | ||
| [[KLinkedListNode]]* | | [[KLinkedListNode]]* | ||
| Pointer to first KLinkedListNode in linked list of KEventInfo objects | | Pointer to first KLinkedListNode in linked list of KEventInfo objects to be fetched with svcGetProcessDebugEvent | ||
|- | |- | ||
| 0x3C | | 0x3C | ||
| [[KLinkedListNode]]* | | [[KLinkedListNode]]* | ||
| Pointer to last KLinkedListNode in linked list of KEventInfo objects | | Pointer to last KLinkedListNode in linked list of KEventInfo objects to be fetched with svcGetProcessDebugEvent | ||
|- | |- | ||
| 0x40 | | 0x40 | ||
Line 90: | Line 100: | ||
| 0x4C | | 0x4C | ||
| [[KProcess]]* | | [[KProcess]]* | ||
| | | Parent process | ||
|- | |- | ||
| 0x50 | | 0x50 | ||
Line 106: | Line 116: | ||
| 0x5C | | 0x5C | ||
| u32 | | u32 | ||
| Count of | | Count of KDebugThread object nodes associated with this KDebug object | ||
|- | |- | ||
| 0x60 | | 0x60 | ||
| KLinkedListNode* | | KLinkedListNode* | ||
| Pointer to first KLinkedListNode in linked list of | | Pointer to first KLinkedListNode in linked list of KDebugThread objects | ||
|- | |- | ||
| 0x64 | | 0x64 | ||
| KLinkedListNode* | | KLinkedListNode* | ||
| Pointer to last KLinkedListNode in linked list of | | Pointer to last KLinkedListNode in linked list of KDebugThread objects | ||
|- | |- | ||
| 0x68 | | 0x68 | ||
| u32 | | u32 | ||
| | | List size; this [[KLinkedList]] of all the [[KThread]] instances of the parent process: the currently running threads followed the others, | ||
by core then by dynamic priority. | |||
|- | |- | ||
| 0x6C | | 0x6C | ||
| KLinkedListNode* | | KLinkedListNode* | ||
| Pointer to first KLinkedListNode in | | Pointer to first KLinkedListNode in the above list | ||
|- | |- | ||
| 0x70 | | 0x70 | ||
| KLinkedListNode* | | KLinkedListNode* | ||
| Pointer to last KLinkedListNode in | | Pointer to last KLinkedListNode in the above list | ||
|- | |- | ||
| 0x74 | | 0x74 | ||
| [[KRecursiveLock]] | | [[KRecursiveLock]] | ||
| Recursive lock | | Recursive lock | ||
|- | |- | ||
Line 135: | Line 146: | ||
| [[KThread]]* | | [[KThread]]* | ||
| Current KThread- used in svcBreak | | Current KThread- used in svcBreak | ||
|- | |||
| 0x80 | |||
| u8 | |||
| Cleared when an EXCEPTION debug event was (attempted to be) signaled (i.e. even when bit2 of the debug flag is clear) | |||
|- | |||
| 0x81 | |||
| u8 | |||
| Indicates that an EXCEPTION debug event was signaled | |||
|- | |||
| 0x82 | |||
| u8 | |||
| Indicates that all threads should be unlocked | |||
|- | |||
| 0x83 | |||
| u8 | |||
| Indicates that an EXCEPTION debug event different from USER_BREAK was continued, while the process was paused | |||
|- | |- | ||
| 0x84 | | 0x84 | ||
| u8 | | u8 | ||
| | | Indicates that a USER_BREAK debug event was continued while the process was paused | ||
|- | |- | ||
| 0x85 | | 0x85 | ||
| u8 | | u8 | ||
| | | Indicates that the KProcess instance it belongs to has exited (normally ?) | ||
|- | |||
| 0x86 | |||
| u8 | |||
| Indicates that the KProcess instance it belongs to has been terminated | |||
|- | |||
| 0x87 | |||
| u8 | |||
| Indicates that svcBreak was used and not yet handled by svcContinueDebugEvent, with type != (UN)LOAD_RO | |||
|- | |- | ||
| 0x88 | | 0x88 | ||
Line 162: | Line 197: | ||
| 0x94 | | 0x94 | ||
| u16 | | u16 | ||
| | | Total number of debug events associated with this object awaiting svcContinueDebugEvent | ||
|- | |- | ||
| 0x96 | | 0x96 | ||
| u16 | | u16 | ||
| | | Number of EXIT PROCESS debug events associated with this object awaiting svcContinueDebugEvent | ||
|- | |- | ||
| 0x98 | | 0x98 | ||
Line 176: | Line 211: | ||
| Debug string length | | Debug string length | ||
|} | |} | ||