Correctly handle cases when a thread single-steps into the kernel as it can
happen on syscalls or "int" instructions. The debug exception handler sets the thread debug flags B_THREAD_DEBUG_STOP and B_THREAD_DEBUG_NOTIFY_SINGLE_STEP (new) and lets the thread continue. Before leaving the kernel the thread is stopped and a single-step notification is sent. Fixes #3487. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35620 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -154,17 +154,18 @@ enum {
|
||||
|
||||
// thread debugging flags (user-specifiable flags are in <debugger.h>)
|
||||
enum {
|
||||
B_THREAD_DEBUG_INITIALIZED = 0x0001,
|
||||
B_THREAD_DEBUG_DYING = 0x0002,
|
||||
B_THREAD_DEBUG_STOP = 0x0004,
|
||||
B_THREAD_DEBUG_STOPPED = 0x0008,
|
||||
B_THREAD_DEBUG_SINGLE_STEP = 0x0010,
|
||||
B_THREAD_DEBUG_INITIALIZED = 0x0001,
|
||||
B_THREAD_DEBUG_DYING = 0x0002,
|
||||
B_THREAD_DEBUG_STOP = 0x0004,
|
||||
B_THREAD_DEBUG_STOPPED = 0x0008,
|
||||
B_THREAD_DEBUG_SINGLE_STEP = 0x0010,
|
||||
B_THREAD_DEBUG_NOTIFY_SINGLE_STEP = 0x0020,
|
||||
|
||||
B_THREAD_DEBUG_NUB_THREAD = 0x0020, // marks the nub thread
|
||||
B_THREAD_DEBUG_NUB_THREAD = 0x0040, // marks the nub thread
|
||||
|
||||
B_THREAD_DEBUG_KERNEL_FLAG_MASK = 0xffff,
|
||||
B_THREAD_DEBUG_KERNEL_FLAG_MASK = 0xffff,
|
||||
|
||||
B_THREAD_DEBUG_DEFAULT_FLAGS = 0,
|
||||
B_THREAD_DEBUG_DEFAULT_FLAGS = 0,
|
||||
};
|
||||
|
||||
// messages sent from the debug nub thread to a debugged thread
|
||||
|
||||
Reference in New Issue
Block a user