debug.Assert与Debug.Print的区别.

ning1958 2011-08-31 09:11:07
常用Debug.Print
debug.Assert基本不用.
近期看一个SolidWorks API帮助文件,使用debug.Assert比较多
请问,两者的区别是什么.
...全文
450 6 打赏 收藏 举报
写回复
6 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
无·法 2011-08-31
[Quote=引用 4 楼 sysdzw 的回复:]
举个例子吧。假如有下面一小片代码。

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,笨方法啊。
[/Quote]发现第4个方法,和debug.assert类似:
右击代码区中的i,选择菜单“添加监视”,在表达式框里输入i=31,下面选择“当表达式值为真时中断”,这样就ok了,一句代码不要啊。
  • 打赏
  • 举报
回复
这个……真学习了
  • 打赏
  • 举报
回复
无·法 2011-08-31
举个例子吧。假如有下面一小片代码。
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,笨方法啊。
  • 打赏
  • 举报
回复
神马都能聊 2011-08-31
补充一句:
Debug.Assert 布尔表达式1

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

  • 打赏
  • 举报
回复
神马都能聊 2011-08-31
Debug.Assert 布尔表达式1

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

Debug.Print "File = " & swModel.GetPathName

在调试状态下,在控制台窗口输出:File = ……
  • 打赏
  • 举报
回复
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 & ">"
  • 打赏
  • 举报
回复
发帖
VB基础类
加入

7605

社区成员

VB 基础类
社区管理员
  • VB基础类社区
申请成为版主
帖子事件
创建了帖子
2011-08-31 09:11
社区公告
暂无公告