Skip to content

Commit f51e823

Browse files
committed
get dbg command callback
1 parent 293328b commit f51e823

8 files changed

Lines changed: 74 additions & 35 deletions

File tree

Form1.frm

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,18 @@ Begin VB.Form Form1
55
ClientHeight = 9825
66
ClientLeft = 60
77
ClientTop = 345
8-
ClientWidth = 11010
8+
ClientWidth = 14100
99
LinkTopic = "Form1"
1010
ScaleHeight = 9825
11-
ScaleWidth = 11010
11+
ScaleWidth = 14100
1212
StartUpPosition = 3 'Windows Default
13+
Begin VB.ListBox List1
14+
Height = 2595
15+
Left = 6570
16+
TabIndex = 5
17+
Top = 6975
18+
Width = 4065
19+
End
1320
Begin VB.TextBox txtOut
1421
BeginProperty Font
1522
Name = "Courier"
@@ -26,7 +33,7 @@ Begin VB.Form Form1
2633
ScrollBars = 3 'Both
2734
TabIndex = 4
2835
Top = 6975
29-
Width = 10590
36+
Width = 5190
3037
End
3138
Begin VB.CheckBox chkDebug
3239
Caption = "use debugger"
@@ -49,8 +56,8 @@ Begin VB.Form Form1
4956
Left = 135
5057
TabIndex = 0
5158
Top = 585
52-
Width = 10725
53-
_ExtentX = 18918
59+
Width = 13650
60+
_ExtentX = 24077
5461
_ExtentY = 10345
5562
End
5663
Begin VB.Label Label1
@@ -73,7 +80,7 @@ Private Declare Function FreeLibrary Lib "kernel32" (ByVal hLibModule As Long) A
7380

7481
Private Declare Function run_script Lib "sb_engine" (ByVal lpLibFileName As String, ByVal use_debugger As Long) As Long
7582
Private Declare Sub GetErrorString Lib "sb_engine" (ByVal iErrorCode As Long, ByVal buf As String, ByVal sz As Long)
76-
Private Declare Sub SetVBStdout Lib "sb_engine" (ByVal callback As Long)
83+
Private Declare Sub SetCallBacks Lib "sb_engine" (ByVal msgProc As Long, ByVal dbgCmdProc As Long)
7784

7885
Dim loadedFile As String
7986
Dim hsbLib As Long
@@ -84,7 +91,7 @@ Private Sub cmdRun_Click()
8491
Dim buf As String
8592

8693
txtOut.Text = Empty
87-
SetVBStdout AddressOf vb_stdout
94+
SetCallBacks AddressOf vb_stdout, AddressOf GetDebuggerCommand
8895
rv = run_script(loadedFile, chkDebug.Value)
8996

9097
Me.Caption = "run_script() = " & rv & " - " & Format(Now, "m:s:ss AM/PM")

Module1.bas

Lines changed: 32 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,12 @@ Public readyToReturn As Boolean
77
Enum cb_type
88
cb_output = 0
99
cb_dbgout = 1
10-
cb_dbgmsg = 2
10+
cb_debugger = 2
1111
End Enum
1212

13-
Public Function GetDebuggerCommand() As Long
13+
Public Function GetDebuggerCommand(ByVal buf As Long, ByVal sz As Long) As Long
14+
15+
MsgBox "Waiting on debugger command!"
1416

1517
readyToReturn = False
1618
While Not readyToReturn
@@ -22,6 +24,24 @@ Public Function GetDebuggerCommand() As Long
2224

2325
End Function
2426

27+
Public Sub HandleDebugMessage(msg As String)
28+
'DEBUGGER_INIT
29+
'Source-File: %s\r\n
30+
'Current-Line: %u\r\n
31+
'Break-Point: %s\r\n = 1/0
32+
'Line-Number: %u\r\n
33+
'Line: %s\r\n
34+
'Message: %s\r\n
35+
'Value: %s\r\n
36+
'Local-Variable-Name: %s\r\n
37+
'Local-Variable-Value: %s\r\n
38+
'Global-Variable-Name: %s\r\n
39+
'Global-Variable-Value: %s\r\n
40+
41+
Form1.List1.AddItem msg
42+
43+
End Sub
44+
2545
Public Sub vb_stdout(ByVal t As cb_type, ByVal lpMsg As Long, ByVal sz As Long)
2646

2747
Dim b() As Byte
@@ -32,12 +52,15 @@ Public Sub vb_stdout(ByVal t As cb_type, ByVal lpMsg As Long, ByVal sz As Long)
3252
msg = StrConv(b, vbUnicode)
3353
If Right(msg, 1) = Chr(0) Then msg = Left(msg, Len(msg) - 1)
3454

35-
If t = cb_dbgmsg Then msg = "DBG> " & msg
36-
37-
With Form1.txtOut
38-
.Text = .Text & Replace(msg, vbLf, vbCrLf)
39-
.Refresh
40-
DoEvents
41-
End With
55+
If t = cb_debugger Then
56+
HandleDebugMessage msg
57+
Else
58+
If t = cb_dbgout Then msg = "DBG> " & msg
59+
With Form1.txtOut
60+
.Text = .Text & Replace(msg, vbLf, vbCrLf)
61+
.Refresh
62+
DoEvents
63+
End With
64+
End If
4265

4366
End Sub

engine/dllmain.c

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,10 @@ extern void* vb_dbg_preproc;
1616
extern LPWSTR __C2W(char *szString);
1717

1818

19-
void __stdcall SetVBStdout(void* lpfnHandler){
19+
void __stdcall SetCallBacks(void* lpfnMsgHandler, void* lpfnDbgHandler){
2020
#pragma EXPORT
21-
vbStdOut = (vbCallback)lpfnHandler;
21+
vbStdOut = (vbCallback)lpfnMsgHandler;
22+
vbDbgHandler = (vbDbgCallback)lpfnDbgHandler;
2223
}
2324

2425
int __stdcall GetErrorString(int iErrorCode, char* buf, int bufSz){
@@ -43,7 +44,8 @@ int __stdcall run_script(char* fPath, int use_debugger)
4344
scriba_SetFileName(pProgram, fPath);
4445

4546
if(use_debugger){
46-
//iError = scriba_LoadInternalPreprocessorByFunction(pProgram, "vb_dbg", &vb_dbg_preproc);
47+
iError = scriba_LoadInternalPreprocessorByFunction(pProgram, "vb_dbg", &vb_dbg_preproc);
48+
if(iError != 0) goto cleanup;
4749
}
4850

4951
if( iError = scriba_LoadSourceProgram(pProgram) ) goto cleanup;

engine/preprocessors/vb_dbg/debugger.c

Lines changed: 16 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -829,11 +829,11 @@ void scomm_Init(pDebuggerObject pDO)
829829
int i;
830830

831831
sprintf(cBuffer,"DEBUGGER_INIT");
832-
vbStdOut(cb_dbgmsg, cBuffer, strlen(cBuffer));
832+
vbStdOut(cb_debugger, cBuffer, strlen(cBuffer));
833833

834834
for( i=0 ; i < pDO->cFileNames ; i++ ){
835835
sprintf(cBuffer,"Source-File: %s\r\n",pDO->ppszFileNames[i]);
836-
vbStdOut(cb_dbgmsg, cBuffer, strlen(cBuffer));
836+
vbStdOut(cb_debugger, cBuffer, strlen(cBuffer));
837837
}
838838

839839
}
@@ -854,7 +854,7 @@ void scomm_WeAreAt(pDebuggerObject pDO,long i)
854854
int cbBuffer;
855855

856856
sprintf(cBuffer,"Current-Line: %u\r\n",i+1);
857-
vbStdOut(cb_dbgmsg, cBuffer, strlen(cBuffer));
857+
vbStdOut(cb_debugger, cBuffer, strlen(cBuffer));
858858
}
859859

860860
/*POD
@@ -881,13 +881,13 @@ void scomm_List(pDebuggerObject pDO, long lStart, long lEnd, long lThis)
881881
if( j >= pDO->cSourceLines )break;
882882

883883
sprintf(cBuffer,"Break-Point: %s\r\n", pDO->SourceLines[j].BreakPoint ? "1": "0");
884-
vbStdOut(cb_dbgmsg, cBuffer, strlen(cBuffer));
884+
vbStdOut(cb_debugger, cBuffer, strlen(cBuffer));
885885

886886
sprintf(cBuffer,"Line-Number: %u\r\n",j+1);
887-
vbStdOut(cb_dbgmsg, cBuffer, strlen(cBuffer));
887+
vbStdOut(cb_debugger, cBuffer, strlen(cBuffer));
888888

889889
sprintf(cBuffer,"Line: %s\r\n",pDO->SourceLines[j].line);
890-
vbStdOut(cb_dbgmsg, cBuffer, strlen(cBuffer));
890+
vbStdOut(cb_debugger, cBuffer, strlen(cBuffer));
891891
}
892892

893893
}
@@ -975,7 +975,7 @@ void scomm_Message(pDebuggerObject pDO, char *pszMessage)
975975
char cBuffer[200];
976976
int cbBuffer;
977977
sprintf(cBuffer,"Message: %s\r\n",pszMessage);
978-
vbStdOut(cb_dbgmsg, cBuffer, strlen(cBuffer));
978+
vbStdOut(cb_debugger, cBuffer, strlen(cBuffer));
979979
}
980980

981981
/*POD
@@ -1006,7 +1006,8 @@ int scomm_GetCommand(pDebuggerObject pDO, char *pszBuffer, long dwBuffer)
10061006
lThis = GetCurrentDebugLine(pDO);
10071007
scomm_WeAreAt(pDO,lThis);
10081008

1009-
cbBuffer = recv(pDO->socket,cBuffer,1024,0); //--------> blocks while waiting to receive a command
1009+
//cbBuffer = recv(pDO->socket,cBuffer,1024,0); //--------> blocks while waiting to receive a command
1010+
cbBuffer = vbDbgHandler(&cBuffer[0], 1024);
10101011

10111012
cmd = *cBuffer;
10121013
while( ('\r' == cBuffer[cbBuffer-1] || '\n' == cBuffer[cbBuffer-1]) && cbBuffer ){
@@ -1038,7 +1039,7 @@ int scomm_GetCommand(pDebuggerObject pDO, char *pszBuffer, long dwBuffer)
10381039
continue;
10391040
default:
10401041
sprintf(cBuffer,"Value: %s\r\n",pszPrintBuff);
1041-
vbStdOut(cb_dbgmsg, cBuffer, strlen(cBuffer));
1042+
vbStdOut(cb_debugger, cBuffer, strlen(cBuffer));
10421043
}
10431044
continue;
10441045

@@ -1067,7 +1068,7 @@ int scomm_GetCommand(pDebuggerObject pDO, char *pszBuffer, long dwBuffer)
10671068
for( i=StackListPointer->LocalVariables->ArrayLowLimit ; i <= StackListPointer->LocalVariables->ArrayHighLimit ; i++ )
10681069
{
10691070
sprintf(cBuffer,"Local-Variable-Name: %s\r\n",pUF->ppszLocalVariables[i-1]);
1070-
vbStdOut(cb_dbgmsg, cBuffer, strlen(cBuffer));
1071+
vbStdOut(cb_debugger, cBuffer, strlen(cBuffer));
10711072

10721073
if( StackListPointer->LocalVariables )
10731074
{
@@ -1082,12 +1083,12 @@ int scomm_GetCommand(pDebuggerObject pDO, char *pszBuffer, long dwBuffer)
10821083
continue;
10831084
default:
10841085
sprintf(cBuffer,"Local-Variable-Value: %s\r\n",pszPrintBuff);
1085-
vbStdOut(cb_dbgmsg, cBuffer, strlen(cBuffer));
1086+
vbStdOut(cb_debugger, cBuffer, strlen(cBuffer));
10861087
}
10871088
}
10881089
else{
10891090
sprintf(cBuffer,"undef\r\n");
1090-
vbStdOut(cb_dbgmsg, cBuffer, strlen(cBuffer));
1091+
vbStdOut(cb_debugger, cBuffer, strlen(cBuffer));
10911092
}
10921093
}
10931094
continue;
@@ -1098,7 +1099,7 @@ int scomm_GetCommand(pDebuggerObject pDO, char *pszBuffer, long dwBuffer)
10981099
if( NULL == pDO->ppszGlobalVariables[i] )continue;
10991100

11001101
sprintf(cBuffer,"Global-Variable-Name: %s\r\n",pDO->ppszGlobalVariables[i]);
1101-
vbStdOut(cb_dbgmsg, cBuffer, strlen(cBuffer));
1102+
vbStdOut(cb_debugger, cBuffer, strlen(cBuffer));
11021103

11031104
if( pEo->GlobalVariables )
11041105
{
@@ -1112,11 +1113,11 @@ int scomm_GetCommand(pDebuggerObject pDO, char *pszBuffer, long dwBuffer)
11121113
continue;
11131114
default:
11141115
sprintf(cBuffer,"Global-Variable-Value: %s\r\n",pszPrintBuff);
1115-
vbStdOut(cb_dbgmsg, cBuffer, strlen(cBuffer));
1116+
vbStdOut(cb_debugger, cBuffer, strlen(cBuffer));
11161117
}
11171118
}else{
11181119
sprintf(cBuffer,"undef\r\n");
1119-
vbStdOut(cb_dbgmsg, cBuffer, strlen(cBuffer));
1120+
vbStdOut(cb_debugger, cBuffer, strlen(cBuffer));
11201121
}
11211122
}
11221123

engine/sb/include/vb.h

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,17 @@ extern "C" {
88
typedef enum{
99
cb_output=0,
1010
cb_dbgout = 1,
11-
cb_dbgmsg = 2
11+
cb_debugger = 2
1212
} cb_type;
1313

14+
//Public Sub vb_stdout(ByVal t As cb_type, ByVal lpMsg As Long, ByVal sz As Long)
1415
typedef void (__stdcall *vbCallback)(cb_type, char*, int);
1516

17+
//Public Function GetDebuggerCommand(ByVal buf As Long, ByVal sz As Long) As Long
18+
typedef int (__stdcall *vbDbgCallback)(char*, int);
19+
1620
extern vbCallback vbStdOut;
21+
extern vbDbgCallback vbDbgHandler;
1722

1823
#ifdef __cplusplus
1924
}

engine/sb/scriba.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
#include "vb.h"
1010

1111
vbCallback vbStdOut;
12+
vbDbgCallback vbDbgHandler;
1213

1314
/*POD
1415
=H scriba_new()

engine/sb_engine.dll

0 Bytes
Binary file not shown.

vbHost.exe

0 Bytes
Binary file not shown.

0 commit comments

Comments
 (0)