Fixed some buffer overflows.
Made stab parsing more robust (now ignores C++ stabs).
Display correct backtrace at first when invoked on unhandled exception.
Loads stabs from .so files when those are loaded.
diff --git a/debugger/debugger.h b/debugger/debugger.h
index 9190b37..9e1ca9c 100644
--- a/debugger/debugger.h
+++ b/debugger/debugger.h
@@ -115,8 +115,8 @@
EXEC_KILL /* terminate debugging session */
};
-#define DBG_BREAK 0
-#define DBG_WATCH 1
+#define DBG_BREAK 0
+#define DBG_WATCH 1
typedef struct
{
@@ -127,7 +127,10 @@
refcount : 13;
WORD skipcount;
union {
- BYTE opcode;
+ struct {
+ BYTE opcode;
+ BOOL (*func)(void);
+ } b;
struct {
BYTE rw : 1,
len : 2;
@@ -158,7 +161,9 @@
DWORD pid;
DBG_THREAD* threads;
int num_threads;
+ unsigned continue_on_first_exception;
struct tagDBG_MODULE* modules;
+ unsigned long dbg_hdr_addr;
/*
* This is an index we use to keep track of the debug information
* when we have multiple sources. We use the same database to also
@@ -219,7 +224,7 @@
/* debugger/break.c */
extern void DEBUG_SetBreakpoints( BOOL set );
-extern void DEBUG_AddBreakpoint( const DBG_VALUE *addr );
+extern void DEBUG_AddBreakpoint( const DBG_VALUE *addr, BOOL (*func)(void) );
extern void DEBUG_AddWatchpoint( const DBG_VALUE *addr, int is_write );
extern void DEBUG_DelBreakpoint( int num );
extern void DEBUG_EnableBreakpoint( int num, BOOL enable );