Skip to content

Commit fa5bee8

Browse files
committed
fix locals output
1 parent 62dfe9e commit fa5bee8

File tree

11 files changed

+27
-93
lines changed

11 files changed

+27
-93
lines changed

DragControlsIDE.exe

20 KB
Binary file not shown.

DragControlsIDE.vbw

Lines changed: 0 additions & 49 deletions
This file was deleted.

Vb_autoBak/DragControlsIDE.abk

-1.65 MB
Binary file not shown.

frmLocals.frm

Lines changed: 25 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -266,7 +266,7 @@ End Function
266266
'参数: ParentItem: 母节点序号
267267
'. OutputString: 需要分析的字符串
268268
Private Sub ArrayParser(ParentItem As Long, OutputString As String)
269-
'On Error Resume Next 'todo
269+
On Error Resume Next 'todo
270270
Dim SplitTmp() As String '字符串分割缓存
271271
Dim tmpStr As String '字符串处理缓存
272272
Dim NewVarNodesIndex As Long '新添加的VarNodes元素索引
@@ -305,7 +305,6 @@ Private Sub ArrayParser(ParentItem As Long, OutputString As String)
305305
StartQuotePos = InStr(tmpStr, """") - 1 '查找第一个“"”的位置
306306
BracketStartPos = 1 '初始化第一个“{”的位置
307307

308-
'ToDo: handle 【, <incomplete sequence \214>,】
309308
VarName = VarName & "[" '变量名后面加上“[”,为之后添加数组元素序号做准备
310309
If StartQuotePos >= 0 Then '如果找到了“"”,再做进一步的判断
311310
If Left(tmpStr, StartQuotePos) = String(StartQuotePos, "{") Then '这是一个字符串数组(var = {{...(n个{)...{"*)
@@ -315,6 +314,9 @@ Private Sub ArrayParser(ParentItem As Long, OutputString As String)
315314
BracketLevel = BracketLevel + 1
316315
ElseIf Mid(tmpStr, i, 1) = "}" Then
317316
If BracketLevel <= 0 Then '查找到匹配的“}”。此时i是下一个匹配的“}”的位置
317+
If BracketStartPos >= i + 1 Then '检查括号位置是否超出查找的位置。如果超出,就退出过程
318+
Exit Sub
319+
End If
318320
NewParentVarNodesIndex = AddVarItem(NewVarNodesIndex, VarName & ArrayElementIndex & "]", _
319321
VarName & ArrayElementIndex & "]", VarTypeName, _
320322
Mid(tmpStr, BracketStartPos, i - BracketStartPos + 1))
@@ -326,22 +328,35 @@ Private Sub ArrayParser(ParentItem As Long, OutputString As String)
326328
Else
327329
BracketLevel = BracketLevel - 1
328330
End If
329-
ElseIf Mid(tmpStr, i, 1) = """" Then '遇到“"”,查找到下一个匹配的”"“,确保不会分析到字符串中间去
331+
ElseIf Mid(tmpStr, i, 1) = """" Then '遇到“"”,查找下一个匹配的“"”,确保不会分析到字符串中间去
330332
Do
331333
i = i + 1
332334
Loop Until (Mid(tmpStr, i, 1) = """" And Mid(tmpStr, i - 1, 1) <> "\") Or i > Len(tmpStr) '一直向后查找“"”,直到不处于字符串中间
335+
ElseIf Mid(tmpStr, i, 1) = "<" Then '遇到“”,查找下一个匹配的“”,确保不会分析到“<>”中间去(处理新版gdb的“<incomplete sequence \*>”输出)
336+
Do
337+
i = i + 1
338+
Loop Until Mid(tmpStr, i, 1) = ">" Or i > Len(tmpStr) '一直向后查找“>”,直到不处于“<>”中间
339+
i = i + 2 '跳过“, ”
333340
End If
334341
Next i
335342
Else '否则就依次添加所有元素
336-
StartQuotePos = 1
337-
For i = 2 To Len(tmpStr) '查找开头的“"”对应的下一个“"”
338-
Do '一直向后查找“"”,直到不处于字符串中间
339-
i = i + 1
340-
Loop Until (Mid(tmpStr, i, 1) = """" And Mid(tmpStr, i - 1, 1) <> "\") Or i > Len(tmpStr) '跳过“\"”,这是在字符串里面的“"”
343+
StartQuotePos = 0
344+
For i = 1 To Len(tmpStr) '查找开头的“"”对应的下一个“"”
345+
If Mid(tmpStr, i, 1) = """" Then '如果是以“"”开头的元素
346+
Do '一直向后查找“"”,直到不处于字符串中间
347+
i = i + 1
348+
Loop Until (Mid(tmpStr, i, 1) = """" And Mid(tmpStr, i - 1, 1) <> "\") Or i > Len(tmpStr) '跳过“\"”,这是在字符串里面的“"”
349+
ElseIf Mid(tmpStr, i, 1) = "<" Then '如果是以“<”开头的元素(处理新版gdb的“<incomplete sequence \*>”输出)
350+
Do '一直向后查找“>”,直到不处于“<>”中间
351+
i = i + 1
352+
Loop Until Mid(tmpStr, i, 1) = ">" Or i > Len(tmpStr)
353+
Else '其它东西?应该不会出现这种情况吧
354+
i = Len(tmpStr) '如果真的出现这种情况... 直接跳到结尾吧
355+
End If
341356
Call AddVarItem(NewVarNodesIndex, VarName & ArrayElementIndex & "]", VarName & ArrayElementIndex & "]", _
342-
VarTypeName, Mid(tmpStr, StartQuotePos + 1, i - StartQuotePos - 1))
357+
VarTypeName, Mid(tmpStr, StartQuotePos + 1, i - StartQuotePos))
343358
ArrayElementIndex = ArrayElementIndex + 1
344-
i = i + 3 '跳过“, ”
359+
i = i + 2 '跳过“, ”
345360
StartQuotePos = i '记录新的“"”的位置
346361
Next i
347362
End If

frmMain.frm

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1338,6 +1338,7 @@ Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
13381338
Call DestroyToolTip
13391339

13401340
'关闭管道
1341+
Me.tmrCheckProcess.Enabled = False '停止计时器
13411342
If Not GdbPipe Is Nothing Then
13421343
GdbPipe.StopRecvOutput
13431344
GdbPipe.CloseDosIO
@@ -1471,7 +1472,7 @@ Private Sub tmrCheckProcess_Timer()
14711472
.TargetWindow.RedrawBreakpoints '绘制中断行的小箭头
14721473
End With
14731474
End If
1474-
frmOutput.OutputLog lang_main_debug_breakpointhit & ": " & _
1475+
frmOutput.OutputLog Lang_Main_Debug_BreakpointHit & ": " & _
14751476
CurrentProject.Files(GdbBreakpoints(BreakpointIndex).FileIndex).FilePath & ":" & SourceLn
14761477

14771478
'获取各种调试信息
File renamed without changes.
File renamed without changes.

gdb管道调试测试/gdbPipeTest.vbw

Lines changed: 0 additions & 2 deletions
This file was deleted.
-369 KB
Binary file not shown.
-2.9 MB
Binary file not shown.

0 commit comments

Comments
 (0)