KDebug

From 3dbrew
Revision as of 00:18, 15 December 2016 by TuxSH (talk | contribs)
Jump to navigation Jump to search

class KDebug extends KSynchronizationObject and KSendableInterruptEvent;

Size : 0xA0 bytes

Offset Type Description
0x0 u32 Pointer to vtable
0x4 u32 Reference count
0x8 u32 Count of KThreads that sync with this object - number of nodes in the linked list below
0xC KLinkedListNode* Pointer to first KLinkedListNode in node list of KThreads that sync with this object
0x10 KLinkedListNode* Pointer to last KLinkedListNode in node list of KThreads that sync with this object
0x14 KSendableInterruptEvent Process termination event
0x1C u8 Indicates a PROCESS event has been signaled to this object
0x1D u8 Debug string length >> 31
0x1E u8 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 DebugEventType Type of the latest debug event
0x28 KThread * Thread having exclusive access to this object
0x2C u32 Debug event flags set by svcContinueDebugEvents

Bit0: debugger is attached, bit1: report "EXCEPTION" events (this flag is bypassed for svc 0xFF), bit2 : ?, bit3: ?, bit4: ?

0x30 u32 Stop point type that caused the event: 0 = svc 0xFF, 1 = breakpoint, 2 = watchpoint (otherwise it's not updated).
0x34 u32 Count of KEventInfo object nodes associated with this KDebug object
0x38 KLinkedListNode* Pointer to first KLinkedListNode in linked list of KEventInfo objects
0x3C KLinkedListNode* Pointer to last KLinkedListNode in linked list of KEventInfo objects
0x40 u32 Count of KEventInfo object nodes to be fetched with svcContinueDebugEvent (associated with this KDebug object)
0x44 KLinkedListNode* Pointer to first KLinkedListNode in linked list of KEventInfo objects to be fetched with svcContinueDebugEvent
0x48 KLinkedListNode* Pointer to last KLinkedListNode in linked list of KEventInfo objects to be fetched with svcContinueDebugEvent
0x4C KProcess* Parent process
0x50 KThread* Current KThread- thread being debugged
0x54 KThread* Thread using ContinueDebugEvent
0x58 s32 Cpu core of thread using ContinueDebugEvent
0x5C u32 Count of KThread object nodes associated with this KDebug object (threads linked to KDebugThread* instances)
0x60 KLinkedListNode* Pointer to first KLinkedListNode in linked list of KThread objects
0x64 KLinkedListNode* Pointer to last KLinkedListNode in linked list of KThread objects
0x68 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 KLinkedListNode* Pointer to first KLinkedListNode in the above list
0x70 KLinkedListNode* Pointer to last KLinkedListNode in the above list
0x74 KRecursiveLock * Recursive lock
0x7C KThread* Current KThread- used in svcBreak
0x84 u8 Set to 1 to indicate the KProcess it belongs to exited
0x85 u8 Set to 1 to indicate the KProcess it belongs to has been terminated
0x88 u32 * Register dump
0x8C u32 Exception type
0x90 u16 Number of "EXCEPTION" events encountered (0 or 1)
0x92 u16 ID of the invalid SVC that was attempted
0x94 u16 Total number of debug events associated with this object awaiting svcContinueDebugEvent
0x96 u16 Number of EXIT PROCESS debug events associated with this object awaiting svcContinueDebugEvent
0x98 const char * Debug string
0x9C u32 Debug string length

Exception fields are set for the latest notified exception that occured in userland.