*** empty log message ***

This commit is contained in:
Antonio Linares
1999-08-20 22:12:36 +00:00
parent 4eb76c17bc
commit cb4f2e56f0
2 changed files with 61 additions and 6 deletions

View File

@@ -39,21 +39,22 @@
static oDebugger
function Debugger( uParam )
function Debugger( uParam ) // debugger entry point
do case
case ValType( uParam ) == "C"
case ValType( uParam ) == "C" // called from hvm.c hb_vmModuleName()
if oDebugger == nil
oDebugger = TDebugger():New()
oDebugger:Activate( uParam )
endif
case ValType( uParam ) == "N"
case ValType( uParam ) == "N" // called from hvm.c hb_vmDebugShowLines()
if oDebugger != nil
oDebugger:cAppImage = SaveScreen()
oDebugger:nAppRow = Row()
oDebugger:nAppCol = Col()
oDebugger:cAppColors = SetColor()
oDebugger:nAppCursor = SetCursor()
RestScreen( 0, 0, MaxRow(), MaxCol(), oDebugger:cImage )
DispEnd()
oDebugger:GoToLine( uParam )
@@ -70,7 +71,7 @@ CLASS TDebugger
DATA oBar, oBrwText
DATA cImage, nOldCursor
DATA lEnd
DATA cAppImage, nAppRow, nAppCol, cAppColors
DATA cAppImage, nAppRow, nAppCol, cAppColors, nAppCursor
METHOD New()
METHOD Activate( cModuleName )
@@ -151,6 +152,7 @@ METHOD HandleEvent() CLASS TDebugger
RestScreen( 0, 0, MaxRow(), MaxCol(), ::cAppImage )
SetPos( ::nAppRow, ::nAppCol )
SetColor( ::cAppColors )
SetCursor( ::nAppCursor )
::Exit()
otherwise
@@ -257,6 +259,7 @@ CLASS TDbWindow // Debugger windows
METHOD New( nTop, nLeft, nBottom, nRight, cCaption, cColor )
METHOD Show( lFocused )
METHOD Move()
ENDCLASS
@@ -289,6 +292,53 @@ METHOD Show( lFocused ) CLASS TDbWindow
return nil
/*Method move()
Move a window across the screen
Copyright Luiz Rafael Culik 1999
*/
METHOD Move() Class TDbWindow
#define pbar1 replicate(chr(176),8)+chr(32)
local noldtop := ::nTop
local noldleft := ::nLeft
local noldbottom := ::nbottom
local noldright := ::nright
local nkey
while .t.
restscreen(,,,, ::cbackimage)
dispbox(::ntop,::nleft,::nright,::nbottom,pbar1)
nkey=inkey(0)
do case
case nkey==K_UP
if(::ntop !=0,(::ntop--,::nbottom--),nil)
case nkey==K_DOWN
if(::nbottom !=maxrow(),(::ntop++,::nbottom++),nil)
case nkey==K_LEFT
if(::nleft!=0,(::nleft--,::nright--),nil)
case nkey==K_RIGHT
if(::nbottom !=maxrow(),(::nleft++,::nright++),nil)
case nkey==K_ESC
::ntop:=noldtop
::nleft:=nolfleft
::nbottom:=noldbottom
::nright:=noldright
endcase
if ( nkey==K_ESC .or. nkey==K_ENTER)
exit
end
end
// __keyboard(chr(0)),inkey())
return nil
CLASS TDbMenu /* debugger menu */
CLASSDATA aMenus

View File

@@ -106,7 +106,7 @@ static void hb_vmForceLink( void );
/* virtual machine state */
BOOL bHB_DEBUG = FALSE; /* if TRUE traces the virtual machine activity */
BOOL bDebugging = FALSE; /* TRUE if we are running a /b compiled module */
BOOL bDebugging = FALSE;
BOOL bDebugShowLines = FALSE; /* update source code line on the debugger display */
STACK stack;
HB_SYMB symEval = { "__EVAL", FS_PUBLIC, hb_vmDoBlock, 0 }; /* symbol to evaluate codeblocks */
@@ -378,7 +378,7 @@ void hb_vmExecute( BYTE * pCode, PHB_SYMB pSymbols )
case HB_P_LINE:
stack.pBase->item.asSymbol.lineno = pCode[ w + 1 ] + ( pCode[ w + 2 ] * 256 );
if( bDebugShowLines )
if( bDebugging && bDebugShowLines )
hb_vmDebuggerShowLine( pCode[ w + 1 ] + ( pCode[ w + 2 ] * 256 ) );
w += 3;
break;
@@ -844,6 +844,9 @@ void hb_vmDo( WORD wParams )
PHB_ITEM pSelf = stack.pPos - wParams - 1; /* NIL, OBJECT or BLOCK */
PHB_FUNC pFunc;
int iStatics = stack.iStatics; /* Return iStatics position */
BOOL bDebugPrevState = bDebugging;
bDebugging = FALSE;
if( ! IS_SYMBOL( pItem ) )
{
@@ -895,6 +898,8 @@ void hb_vmDo( WORD wParams )
stack.pBase = stack.pItems + wStackBase;
stack.iStatics = iStatics;
bDebugging = bDebugPrevState;
}
HARBOUR hb_vmDoBlock( void )