+ -
当前位置:首页 → 问答吧 → debug.Assert与Debug.Print的区别.

debug.Assert与Debug.Print的区别.

时间:2011-08-31

来源:互联网

常用Debug.Print
debug.Assert基本不用.
近期看一个SolidWorks API帮助文件,使用debug.Assert比较多
请问,两者的区别是什么.

作者: ning1958   发布时间: 2011-08-31

例如在Solidworks API帮助文件中常用的语句
Set swComp = swSelMgr.GetSelectedObjectsComponent2(1):
 Debug.Assert Not swComp Is Nothing  
  Debug.Print "File = " & swModel.GetPathName
  Debug.Print " " & swFeat.Name & " <" & swFeat.GetTypeName & ">"

作者: ning1958   发布时间: 2011-08-31

Debug.Assert 布尔表达式1

在调试状态下,我断言“布尔表达式1”成立。

 Debug.Print "File = " & swModel.GetPathName

在调试状态下,在控制台窗口输出:File = ……

作者: AisaC   发布时间: 2011-08-31

补充一句:
Debug.Assert 布尔表达式1

在调试状态下,我断言“布尔表达式1”成立,当“布尔表达式1”不成立时,调试状态下,抛出异常。

作者: AisaC   发布时间: 2011-08-31

举个例子吧。假如有下面一小片代码。
VB code
Dim i%, n%
For i = 1 To 100
    '其他代码
    n = fun1(i)
    '其他代码
Next

用户反馈有问题,最终定位在这段代码上。你首先做的是用debug.print将所有的i、n打印出来,或者fun1内的关键变量值。
例如:
VB code
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.插入一小片代码设置断点,例如:
VB code
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
VB code
Dim i%, n%
For i = 1 To 100
    '其他代码
    debug.assert i<>31
    n = fun1(i)
    debug.print i,n
    '其他代码
Next


看看哪个更方便,我刚学vb不知道方法3就一直用的1和2,笨方法啊。

作者: sysdzw   发布时间: 2011-08-31

这个……真学习了

作者: yiguangqiang88   发布时间: 2011-08-31