Links are not active on this page.
 _BreakPoint( ) API Library Routine

_BreakPoint( ) is a macro that generates the debugger breakpoint instruction, INT 3 and can be helpful for debugging external routines.

void _BreakPoint(void any)
void any;                     /* Pointer. */

Expand imageRemarks

When a _BreakPoint( ) call is encountered, control transfers to your debugger. Most debuggers return control to the program line that includes the INT3 instruction, and you have to manually increment the instruction pointer (IP) past this instruction. At that time you can use your debugger to set additional breakpoints. Always remove any breakpoints before exiting the external routine. For more information about debugging, see Accessing the Visual FoxPro API.

Expand imageExample

The following example uses the macro _BreakPoint( ) to place an INT 3 that debuggers recognize as a breakpoint.

Visual FoxPro Code

 CopyCode imageCopy Code
SET LIBRARY TO BPOINT  

C Code

 CopyCode imageCopy Code
#include <pro_ext.h>
FAR Example(ParamBlk FAR *parm)
{
   int RetValue;
   _BreakPoint(); // debugger breaks execution here
   _HLock(parm->p[0].val.ev_handle);
   _HLock(parm->p[1].val.ev_handle);
   RetValue = _StrCmp(_HandToPtr(parm->p[0].val.ev_handle),
      _HandToPtr(parm->p[1].val.ev_handle));
   _RetInt(RetValue, 10); // does return control here
   _HUnLock(parm->p[0].val.ev_handle);
   _HUnLock(parm->p[1].val.ev_handle);
}
FoxInfo myFoxInfo[] = {
   {"STRCMP", (FPFI) Example, 2, "C,C"},
};
FoxTable _FoxTable = {
   (FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Expand imageSee Also