Added transparent software breakpoint support for user debuggers:
* The bulk of the work -- i.e. juggling the software and hardware breakpoints, watchpoints, and memory reads/writes -- is done in the new class BreakpointManager. * For the architectures a few capability macros have to be defined, one pointing to the software breakpoint instruction opcode. Done for x86. * Some more simplifications in the user debugger code, made possible by the recently introduced debugger_changed_condition attribute. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31214 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -50,6 +50,34 @@ status_t arch_clear_kernel_watchpoint(void *address);
|
||||
|
||||
#include <arch_user_debugger.h>
|
||||
|
||||
// Defaults for macros defined by the architecture specific header:
|
||||
|
||||
// maximum number of instruction breakpoints
|
||||
#ifndef DEBUG_MAX_BREAKPOINTS
|
||||
# define DEBUG_MAX_BREAKPOINTS 0
|
||||
#endif
|
||||
|
||||
// maximum number of data watchpoints
|
||||
#ifndef DEBUG_MAX_WATCHPOINTS
|
||||
# define DEBUG_MAX_WATCHPOINTS 0
|
||||
#endif
|
||||
|
||||
// the software breakpoint instruction
|
||||
#if !defined(DEBUG_SOFTWARE_BREAKPOINT) \
|
||||
|| !defined(DEBUG_SOFTWARE_BREAKPOINT_SIZE)
|
||||
# undef DEBUG_SOFTWARE_BREAKPOINT
|
||||
# undef DEBUG_SOFTWARE_BREAKPOINT_SIZE
|
||||
# define DEBUG_SOFTWARE_BREAKPOINT NULL
|
||||
# define DEBUG_SOFTWARE_BREAKPOINT_SIZE 0
|
||||
#endif
|
||||
|
||||
// Boolean whether break- and watchpoints use the same registers. If != 0, then
|
||||
// DEBUG_MAX_BREAKPOINTS == DEBUG_MAX_WATCHPOINTS and either specifies the
|
||||
// total count of break- plus watchpoints.
|
||||
#ifndef DEBUG_SHARED_BREAK_AND_WATCHPOINTS
|
||||
# define DEBUG_SHARED_BREAK_AND_WATCHPOINTS 0
|
||||
#endif
|
||||
|
||||
#endif // _ASSEMBLER
|
||||
|
||||
#endif // KERNEL_ARCH_USER_DEBUGGER_H
|
||||
|
||||
Reference in New Issue
Block a user