举个例子吧。假如有下面一小片代码。 Dim i%, n% For i = 1 To 100 '其他代码 n = fun1(i) '其他代码 Next 用户反馈有问题,最终定位在这段代码上。你首先做的是用debug.print将所有的i、n打印出来,或者fun1内的关键变量值。 例如: Dim i%, n% For i = 1 To 100 '其他代码 n = fun1(i) debug.print i,n '其他代码 Next 最终发现当i=31时出错,这时你需要在i=31时单步调试,有三个方法: 1.在n = fun1(i)行设置断点,然后按F5一步步到i=31时改按F8进入子函数单步调试 2.插入一小片代码设置断点,例如: Dim i%, n% For i = 1 To 100 '其他代码 if i=31 then aa=1'在这行设置断点,这行本身没有意义就是为了可以设置断点的。 end if n = fun1(i) debug.print i,n '其他代码 Next 3.用debug.assert Dim i%, n% For i = 1 To 100 '其他代码 debug.assert i<>31 n = fun1(i) debug.print i,n '其他代码 Next看看哪个更方便,我刚学vb不知道方法3就一直用的1和2,笨方法啊。
Set swComp = swSelMgr.GetSelectedObjectsComponent2(1):
Debug.Assert Not swComp Is Nothing
Debug.Print "File = " & swModel.GetPathName
Debug.Print " " & swFeat.Name & " <" & swFeat.GetTypeName & ">"
Debug.Assert 布尔表达式1在调试状态下,我断言“布尔表达式1”成立,当“布尔表达式1”不成立时,调试状态下,抛出异常。
Dim i%, n%
For i = 1 To 100
'其他代码
n = fun1(i)
'其他代码
Next
用户反馈有问题,最终定位在这段代码上。你首先做的是用debug.print将所有的i、n打印出来,或者fun1内的关键变量值。
例如:
Dim i%, n%
For i = 1 To 100
'其他代码
n = fun1(i)
debug.print i,n
'其他代码
Next
最终发现当i=31时出错,这时你需要在i=31时单步调试,有三个方法:
1.在n = fun1(i)行设置断点,然后按F5一步步到i=31时改按F8进入子函数单步调试
2.插入一小片代码设置断点,例如:
Dim i%, n%
For i = 1 To 100
'其他代码
if i=31 then
aa=1'在这行设置断点,这行本身没有意义就是为了可以设置断点的。
end if
n = fun1(i)
debug.print i,n
'其他代码
Next
3.用debug.assert
Dim i%, n%
For i = 1 To 100
'其他代码
debug.assert i<>31
n = fun1(i)
debug.print i,n
'其他代码
Next看看哪个更方便,我刚学vb不知道方法3就一直用的1和2,笨方法啊。
右击代码区中的i,选择菜单“添加监视”,在表达式框里输入i=31,下面选择“当表达式值为真时中断”,这样就ok了,一句代码不要啊。