Introduced DBG_VALUE struct to manipulate debugger/debuggee address space. Added watch (hardware assisted debugging) and whatis (type of expr) commands. Fixed some issues in local vars handling (stabs parsing & registers optimization).
diff --git a/debugger/display.c b/debugger/display.c index 431a289..80926f9 100644 --- a/debugger/display.c +++ b/debugger/display.c
@@ -49,7 +49,7 @@ } int -DEBUG_InfoDisplay() +DEBUG_InfoDisplay(void) { int i; @@ -70,10 +70,10 @@ } int -DEBUG_DoDisplay() +DEBUG_DoDisplay(void) { - DBG_ADDR addr; - int i; + DBG_VALUE value; + int i; /* * First find a slot where we can store this display. @@ -82,8 +82,8 @@ { if( displaypoints[i].exp != NULL ) { - addr = DEBUG_EvalExpr(displaypoints[i].exp); - if( addr.type == NULL ) + value = DEBUG_EvalExpr(displaypoints[i].exp); + if( value.type == NULL ) { fprintf(stderr, "Unable to evaluate expression "); DEBUG_DisplayExpr(displaypoints[i].exp); @@ -97,13 +97,13 @@ fprintf(stderr, " = "); if( displaypoints[i].format == 'i' ) { - DEBUG_ExamineMemory( &addr, - displaypoints[i].count, - displaypoints[i].format); + DEBUG_ExamineMemory( &value, + displaypoints[i].count, + displaypoints[i].format); } else { - DEBUG_Print( &addr, + DEBUG_Print( &value, displaypoints[i].count, displaypoints[i].format, 0); }