4 * Copyright 1995 Alexandre Julliard
11 #include "registers.h"
14 #define STEP_FLAG 0x100 /* single step flag */
18 DWORD seg
; /* 0xffffffff means current default segment (cs or ds) */
22 #define DBG_FIX_ADDR_SEG(addr,default) \
23 { if ((addr)->seg == 0xffffffff) (addr)->seg = (default); \
24 if (((addr)->seg == WINE_CODE_SELECTOR) || \
25 (addr)->seg == WINE_DATA_SELECTOR) (addr)->seg = 0; }
27 #define DBG_ADDR_TO_LIN(addr) \
28 ((addr)->seg ? (char *)PTR_SEG_OFF_TO_LIN((addr)->seg,(addr)->off) \
29 : (char *)(addr)->off)
31 #define DBG_CHECK_READ_PTR(addr,len) \
32 (!DEBUG_IsBadReadPtr((addr),(len)) || \
33 (fprintf(stderr,"*** Invalid address "), \
34 DEBUG_PrintAddress((addr),dbg_mode), \
35 fprintf(stderr,"\n"),0))
37 #define DBG_CHECK_WRITE_PTR(addr,len) \
38 (!DEBUG_IsBadWritePtr((addr),(len)) || \
39 (fprintf(stderr,"*** Invalid address "), \
40 DEBUG_PrintAddress(addr,dbg_mode), \
41 fprintf(stderr,"\n"),0))
45 REG_EAX
, REG_EBX
, REG_ECX
, REG_EDX
, REG_ESI
,
46 REG_EDI
, REG_EBP
, REG_EFL
, REG_EIP
, REG_ESP
,
47 REG_AX
, REG_BX
, REG_CX
, REG_DX
, REG_SI
,
48 REG_DI
, REG_BP
, REG_FL
, REG_IP
, REG_SP
,
49 REG_CS
, REG_DS
, REG_ES
, REG_SS
55 EXEC_CONT
, /* Continuous execution */
56 EXEC_STEP_OVER
, /* Stepping over a call */
57 EXEC_STEP_INSTR
/* Single-stepping an instruction */
60 extern struct sigcontext_struct
*DEBUG_context
; /* debugger/registers.c */
61 extern unsigned int dbg_mode
;
63 /* debugger/break.c */
64 extern void DEBUG_SetBreakpoints( BOOL set
);
65 extern int DEBUG_FindBreakpoint( const DBG_ADDR
*addr
);
66 extern void DEBUG_AddBreakpoint( const DBG_ADDR
*addr
);
67 extern void DEBUG_DelBreakpoint( int num
);
68 extern void DEBUG_EnableBreakpoint( int num
, BOOL enable
);
69 extern void DEBUG_InfoBreakpoints(void);
70 extern BOOL
DEBUG_HandleTrap( struct sigcontext_struct
*context
);
71 extern BOOL
DEBUG_ShouldContinue( struct sigcontext_struct
*context
,
72 enum exec_mode mode
);
73 extern void DEBUG_RestartExecution( struct sigcontext_struct
*context
,
74 enum exec_mode mode
, int instr_len
);
76 /* debugger/db_disasm.c */
77 extern void DEBUG_Disasm( DBG_ADDR
*addr
);
80 extern void DEBUG_AddSymbol( const char *name
, const DBG_ADDR
*addr
);
81 extern BOOL
DEBUG_GetSymbolValue( const char * name
, DBG_ADDR
*addr
);
82 extern BOOL
DEBUG_SetSymbolValue( const char * name
, const DBG_ADDR
*addr
);
83 extern const char * DEBUG_FindNearestSymbol( const DBG_ADDR
*addr
);
84 extern void DEBUG_ReadSymbolTable( const char * filename
);
85 extern void DEBUG_LoadEntryPoints(void);
88 extern void DEBUG_Print( const DBG_ADDR
*addr
, int count
, char format
);
89 extern void DEBUG_PrintAddress( const DBG_ADDR
*addr
, int addrlen
);
90 extern void DEBUG_Help(void);
91 extern void DEBUG_List( DBG_ADDR
*addr
, int count
);
92 extern void DEBUG_InitWalk(void);
93 extern void DEBUG_WndWalk( HWND
);
94 extern void DEBUG_WndDump( HWND
);
95 extern void DEBUG_QueueDump( HQUEUE
);
97 /* debugger/memory.c */
98 extern BOOL
DEBUG_IsBadReadPtr( const DBG_ADDR
*address
, int size
);
99 extern BOOL
DEBUG_IsBadWritePtr( const DBG_ADDR
*address
, int size
);
100 extern int DEBUG_ReadMemory( const DBG_ADDR
*address
);
101 extern void DEBUG_WriteMemory( const DBG_ADDR
*address
, int value
);
102 extern void DEBUG_ExamineMemory( const DBG_ADDR
*addr
, int count
, char format
);
104 /* debugger/registers.c */
105 extern void DEBUG_SetRegister( enum debug_regs reg
, int val
);
106 extern int DEBUG_GetRegister( enum debug_regs reg
);
107 extern void DEBUG_InfoRegisters(void);
109 /* debugger/stack.c */
110 extern void DEBUG_InfoStack(void);
111 extern void DEBUG_BackTrace(void);
114 extern void wine_debug( int signal
, struct sigcontext_struct
* regs
);
116 #endif /* DEBUGGER_H */