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

解决方案 »

  1.   

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

  2.   

     Debug.Assert 布尔表达式1在调试状态下,我断言“布尔表达式1”成立。 Debug.Print "File = " & swModel.GetPathName在调试状态下,在控制台窗口输出:File = ……
      

  3.   

    补充一句:
    Debug.Assert 布尔表达式1在调试状态下,我断言“布尔表达式1”成立,当“布尔表达式1”不成立时,调试状态下,抛出异常。
      

  4.   

    举个例子吧。假如有下面一小片代码。
    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,笨方法啊。
      

  5.   

    发现第4个方法,和debug.assert类似:
    右击代码区中的i,选择菜单“添加监视”,在表达式框里输入i=31,下面选择“当表达式值为真时中断”,这样就ok了,一句代码不要啊。