Difference between revisions of "Interfacing the Debugger"

m (Introduction)
m (Introduction)
Line 3: Line 3:
  
 
====Introduction====
 
====Introduction====
 
+
EiffelStudio supports a rich debugging feature set for workbench code. When a
  
 
{|border="0" cellpadding="2" cellspacing="0" align="center"
 
{|border="0" cellpadding="2" cellspacing="0" align="center"

Revision as of 06:43, 20 January 2007

Warning.png Warning: Warning: Article under development

Introduction

EiffelStudio supports a rich debugging feature set for workbench code. When a

/* foo */
 
EIF_BOOLEAN Fadkw7f (EIF_REFERENCE Current, 
                     EIF_REFERENCE arg1, 
                     EIF_REFERENCE arg2)
{
   EIF_INTEGER_32 loc1 = (EIF_INTEGER_32) 0;
   EIF_BOOLEAN Result = (EIF_BOOLEAN) 0;
   ...
 
   /*Load locals onto the debuggers stack (cop_stack):*/
   RTLU (SK_BOOL, &Result); 
   RTLU(SK_REF,&arg1);
   RTLU(SK_REF,&arg2);
   RTLU (SK_REF, &Current);
   RTLU(SK_INT32, &loc1);
   ...
   RTHOOK(1);  //Signal debugger, breakpoint slot 1 reached
   loc1 = (EIF_INTEGER_32)((EIF_INTEGER_32) 10L);
   RTHOOK(2);  //Signal debugger, breakpoint slot 2 reached
   tp1 = (FUNCTION_CAST(EIF_REFERENCE, (EIF_REFERENCE)) 
      RTVF(100, 33, "first", arg1))(arg1);
   RTNHOOK(2); //Signal debugger, nested breakpoint slot
   tp2 = RTCCL(arg2);
   (FUNCTION_CAST(void, (EIF_REFERENCE, EIF_REFERENCE)) 
      RTVF(100, 39, "force", tp1))(tp1, tp2);
   RTHOOK(3);  //Signal debugger, breakpoint slot 3 reached
   Result = (EIF_BOOLEAN)(EIF_BOOLEAN) 1;
   RTHOOK(4);  //Signal debugger, breakpoint slot 4 reached
   RTLO(5);    //Pop the five locals from the debuggers stack
 
   return Result;
}