Difference between revisions of "KDebug"

From 3dbrew
Jump to navigation Jump to search
Line 86: Line 86:
 
| 0x5C
 
| 0x5C
 
| u32
 
| u32
| Count of KDebugThread object nodes associated with this KDebug object
+
| Count of KThread object nodes associated with this KDebug object (threads linked to [[KDebugThread]]* instances)
 
|-
 
|-
 
| 0x60
 
| 0x60
 
| KLinkedListNode*
 
| KLinkedListNode*
| Pointer to first KLinkedListNode in linked list of KDebugThread objects
+
| Pointer to first KLinkedListNode in linked list of KThread objects
 
|-
 
|-
 
| 0x64
 
| 0x64
 
| KLinkedListNode*
 
| KLinkedListNode*
| Pointer to last KLinkedListNode in linked list of KDebugThread objects
+
| Pointer to last KLinkedListNode in linked list of KThread objects
 
|-
 
|-
 
| 0x68
 
| 0x68

Revision as of 18:26, 14 December 2016

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
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* Process the thread belongs to (virtual address)
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 Count of KDebug object nodes
0x6C KLinkedListNode* Pointer to first KLinkedListNode in linked list of KDebug objects
0x70 KLinkedListNode* Pointer to last KLinkedListNode in linked list of KDebug objects
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 Counter, unknown
0x96 u16 Counter, unknown
0x98 const char * Debug string
0x9C u32 Debug string length

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