Interfacing the Debugger
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; } |