2010-03-03 02:38 UTC+0100 Przemyslaw Czerpak (druzus/at/priv.onet.pl)

* harbour/doc/en/hvm.txt
    - removed __DBGVMVARLGET() description

  * harbour/src/debug/dbgbrwsr.prg
    % small speed improvement

  * harbour/include/hbextern.ch
  * harbour/src/vm/debug.c
    + added internal debug function: __DBGVMLOCALLIST( <nLevel> ) -> <aVars>
This commit is contained in:
Przemyslaw Czerpak
2010-03-03 01:39:10 +00:00
parent f9d70c6659
commit 91f9a3f12c
5 changed files with 62 additions and 54 deletions

View File

@@ -17,6 +17,17 @@
past entries belonging to author(s): Viktor Szakats.
*/
2010-03-03 02:38 UTC+0100 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/doc/en/hvm.txt
- removed __DBGVMVARLGET() description
* harbour/src/debug/dbgbrwsr.prg
% small speed improvement
* harbour/include/hbextern.ch
* harbour/src/vm/debug.c
+ added internal debug function: __DBGVMLOCALLIST( <nLevel> ) -> <aVars>
2010-03-03 02:02 UTC+0100 Viktor Szakats (harbour.01 syenar.hu)
- examples/pe
- Deleted empty dir.

View File

@@ -405,33 +405,3 @@
* Library is rtl
* $END$
*/
/* $DOC$
* $TEMPLATE$
* Function
* $NAME$
* __DBGVMVARLGET()
* $CATEGORY$
* API
* $SUBCATEGORY$
* Variable Management
* $ONELINER$
* Retrive a local variable from a procedure level
* $SYNTAX$
* __DBGVMVARLGET( <nProcLevel>, <nLocal> ) --> <xRetVal>
* $ARGUMENTS$
* <nProcLevel> Is the procedure level, same as used in ProcName()
* and ProcLine(), from which a local variable containts is going to
* be retrieved.
*
* <nLocal> Is the index of the local variable to retrieve.
* $RETURNS$
* <xRetVal> The content of a specific local variable
* $DESCRIPTION$
* This function is used from the debugger
* $COMPLIANCE$
*
* $FILES$
* Library is vm
* $END$
*/

View File

@@ -577,21 +577,22 @@ EXTERNAL __I18N_POTARRAYJOIN
/* The debugger interface */
EXTERNAL __DBGINVOKEDEBUG
EXTERNAL __DBGVMVARGLIST
EXTERNAL __DBGVMVARGGET
EXTERNAL __DBGVMVARGSET
EXTERNAL __DBGVMVARSLEN
EXTERNAL __DBGVMVARSLIST
EXTERNAL __DBGVMVARSGET
EXTERNAL __DBGVMVARSSET
EXTERNAL __DBGVMVARLGET
EXTERNAL __DBGVMVARLSET
EXTERNAL __DBGPROCLEVEL
EXTERNAL __DBGVMLOCALLIST
EXTERNAL __DBGVMPARLLIST
EXTERNAL __DBGVMSTKGCOUNT
EXTERNAL __DBGVMSTKGLIST
EXTERNAL __DBGVMSTKLCOUNT
EXTERNAL __DBGVMSTKLLIST
EXTERNAL __DBGVMVARGGET
EXTERNAL __DBGVMVARGLIST
EXTERNAL __DBGVMVARGSET
EXTERNAL __DBGVMVARLGET
EXTERNAL __DBGVMVARLSET
EXTERNAL __DBGVMVARSGET
EXTERNAL __DBGVMVARSSET
EXTERNAL __DBGVMVARSLEN
EXTERNAL __DBGVMVARSLIST
EXTERNAL __DBGPROCLEVEL
/* RDD related symbols */

View File

@@ -131,7 +131,7 @@ METHOD New( nTop, nLeft, nBottom, nRight, oParentWindow ) CLASS HBDbBrowser
METHOD Configure()
::rowCount := ::nBottom - ::nTop + 1
ASize( ::aRowState, ::rowCount )
AFill( ASize( ::aRowState, ::rowCount ), .F. )
::lConfigured := .T.
RETURN Self
@@ -164,8 +164,9 @@ METHOD ForceStable()
IF !::lConfigured
::Configure()
ENDIF
DispBegin()
FOR nRow := 1 TO ::rowCount
IF Empty( ::aRowState[ nRow ] )
IF !::aRowState[ nRow ]
::GoTo( ::nFirstVisible + nRow - 1 )
IF ::hitBottom
hb_dispOutAt( ::nTop + nRow - 1, ::nLeft, Space( ::nRight - ::nLeft + 1 ), ::aColorSpec[ 1 ] )
@@ -182,10 +183,9 @@ METHOD ForceStable()
ELSE
nClr := oCol:defColor[ nClr ]
ENDIF
IF oCol:width == NIL
nWid := oCol:width
IF nWid == NIL
nWid := Len( xData )
ELSE
nWid := oCol:width
ENDIF
hb_dispOutAt( ::nTop + nRow - 1, nColX, PadR( xData, nWid ) + iif( nCol < Len( ::aColumns ), " ", "" ), ::aColorSpec[ nClr ] )
nColX += nWid + 1
@@ -197,6 +197,7 @@ METHOD ForceStable()
NEXT
::GoTo( ::nFirstVisible + ::rowPos - 1 )
SetPos( ::nTop + ::rowPos - 1, ::nLeft )
DispEnd()
RETURN Self
METHOD GoTo( nRow )

View File

@@ -63,6 +63,8 @@
* __DBGVMSTKGCOUNT()
* __DBGVMSTKGLIST()
* __DBGVMSTKLCOUNT()
* __DBGVMSTKLLIST()
* __DBGVMLOCALLIST()
* __DBGVMPARLLIST()
* for locals:
* __DBGVMVARLGET() (debugger.prg)
@@ -84,7 +86,7 @@
* __DBGVMVARSLEN()
* __DBGVMVARSGET() (debugger.prg)
* __DBGVMVARSSET() (debugger.prg)
* hb_dbg_vmVarSGet(int,int) (dbgentry.c)
* hb_dbg_vmVarSGet(PHB_ITEM,int)(dbgentry.c)
* for globals (unused):
* __DBGVMVARGLIST()
* __DBGVMVARGGET() (debugger.prg)
@@ -104,7 +106,6 @@
*/
/* $Doc$
* $FuncName$ AddToArray( <pItem>, <pReturn>, <uiPos> )
* $Description$ Add <pItem> to array <pReturn> at pos <uiPos>
@@ -220,13 +221,37 @@ HB_FUNC( __DBGVMSTKLLIST )
hb_itemReturnRelease( pReturn );
}
/* $Doc$
* $FuncName$ <aParam> __dbgvmParLGet()
* $Description$ Returns the passed parameters of the calling function
* $End$ */
/* TODO : put bLocals / bParams */
/* somewhere for declared parameters */
/* and locals */
HB_FUNC( __DBGVMLOCALLIST )
{
PHB_ITEM pArray;
HB_LONG lBaseOffset, lPrevOffset, lLen, l;
int iLevel = hb_parni( 1 ) + 1;
lBaseOffset = hb_stackBaseOffset();
while( --iLevel > 0 && lBaseOffset > 1 )
lBaseOffset = hb_stackItem( lBaseOffset - 1 )->item.asSymbol.stackstate->lBaseItem + 1;
if( lBaseOffset > 1 )
{
PHB_ITEM pSymItm;
lPrevOffset = hb_stackItem( lBaseOffset - 1 )->item.asSymbol.stackstate->lBaseItem;
pSymItm = hb_stackItem( lPrevOffset );
lPrevOffset += HB_MAX( pSymItm->item.asSymbol.paramdeclcnt,
pSymItm->item.asSymbol.paramcnt ) + 1;
lLen = lBaseOffset - lPrevOffset - 2;
}
else
lLen = lPrevOffset = 0;
pArray = hb_itemArrayNew( lLen );
for( l = 1; l <= lLen; ++l )
hb_itemCopyFromRef( hb_arrayGetItemPtr( pArray, l ),
hb_stackItem( lPrevOffset + l ) );
hb_itemReturnRelease( pArray );
}
HB_FUNC( __DBGVMPARLLIST )
{
hb_itemReturnRelease( hb_arrayFromParams( hb_parni( 1 ) + 1 ) );