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 a PROCESS event has been signaled to this object
| 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 exclusively reporting a debug event to this object
| Thread having exclusive access to this object
|-
|-
| 0x2C
| 0x2C
| u32
| u32
| Debug event flags set by svcContinueDebugEvents
| Debug event flags set by svcContinueDebugEvents
Bit0: debugger is attached, bit1: report "EXCEPTION" events (this flag is bypassed for svc 0xFF), bit2 : ?, bit3: ?, bit4: ?
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]]*
| Process the thread belongs to (virtual address)
| Parent process
|-
|-
| 0x50
| 0x50
Line 106: Line 116:
| 0x5C
| 0x5C
| u32
| u32
| Count of KThread object nodes associated with this KDebug object (threads linked to [[KDebugThread]]* instances)
| Count of KDebugThread object nodes associated with this KDebug object
|-
|-
| 0x60
| 0x60
| KLinkedListNode*
| KLinkedListNode*
| Pointer to first KLinkedListNode in linked list of KThread objects
| Pointer to first KLinkedListNode in linked list of KDebugThread objects
|-
|-
| 0x64
| 0x64
| KLinkedListNode*
| KLinkedListNode*
| Pointer to last KLinkedListNode in linked list of KThread objects
| Pointer to last KLinkedListNode in linked list of KDebugThread objects
|-
|-
| 0x68
| 0x68
| u32
| u32
| Count of KDebug object nodes
| 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 linked list of KDebug objects
| Pointer to first KLinkedListNode in the above list
|-
|-
| 0x70
| 0x70
| KLinkedListNode*
| KLinkedListNode*
| Pointer to last KLinkedListNode in linked list of KDebug objects
| 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
| Set to 1 to indicate the KProcess it belongs to exited
| Indicates that a USER_BREAK debug event was continued while the process was paused
|-
|-
| 0x85
| 0x85
| u8
| u8
| Set to 1 to indicate the KProcess it belongs to has been terminated
| 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
| Counter, unknown
| Total number of debug events associated with this object awaiting svcContinueDebugEvent
|-
|-
| 0x96
| 0x96
| u16
| u16
| Counter, unknown
| Number of EXIT PROCESS debug events associated with this object awaiting svcContinueDebugEvent
|-
|-
| 0x98
| 0x98
Line 176: Line 211:
| Debug string length
| Debug string length
|}
|}
Exception fields are set for the latest notified exception that occured in userland.