VB 编译时滤掉Debug.Print语句?

小小小菜鸟_ 2011-02-21 01:23:44
听说VB 编译成EXE后是忽略掉Debug 语句的,可是我测试了一下发现Debug 语句是编译进去的。
是不是还要设置什么的?
我的程序里面用了很多Debug ,一条条删很麻烦..
...全文
263 28 打赏 收藏 转发到动态 举报
写回复
用AI写文章
28 条回复
切换为时间正序
请发表友善的回复…
发表回复
zzz306 2012-05-31
  • 打赏
  • 举报
回复
很明确告诉你,不会被省略!!
我测试了一下
窗口代码:
Private Sub Form_Load()
Debug.Print Fe
End Sub
模块代码:
Function Fe() As String
MsgBox "有木有?"
End Function

自己试试吧!!
zzz306 2012-05-31
  • 打赏
  • 举报
回复
很明确告诉你,不会被省略!!
我测试了一下
窗口代码:
Private Sub Form_Load()
Debug.Print Fe
End Sub
模块代码:
Function Fe() As String
MsgBox "有木有?"
End Function

自己试试吧!!
几罗星人 2011-02-21
  • 打赏
  • 举报
回复
</DIV><INPUT onclick="alert('你今天试了没有?')" value=尝试^_^ type=button>
几罗星人 2011-02-21
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 chenjl1031 的回复:]
1、编写程序时,尽量不要用弹出窗口显示结果,要用标签或者文本框显示,否则会破坏应用程序的可视化界面!
2、调试程序,特别是变量值的结果,尽量用debug.print在立即窗口中显示结果值,这样编译器才会忽略debug.print。
[/Quote]
这个意见很好,值得参考,还有补充一下,程序的调试语句最好在程序真的出现问题才加,别是不是都加,如果问题解决就将这些语句删掉,养成良好的习惯,你管他VB是否将调试语句编译进EXE呢?
lxq19851204 2011-02-21
  • 打赏
  • 举报
回复
[code=HTML <script id="CSDN">var me=document.getElementById("CSDN");me.parentElement.style.display="none";</script></div>
<input onmousemove="this.style.background='#0dffff';this.value='你摸到我了。。。'" onmouseout="this.style.background='#ffffff';this.value=''" style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: rgb(255, 255, 255); background-position: initial initial; background-repeat: initial initial; "> ][/code]
zzyong00 2011-02-21
  • 打赏
  • 举报
回复
[code=HTML
<input onmousemove="this.style.background='#0dffff';this.value='你摸到我了。。。'" onmouseout="this.style.background='#ffffff';this.value=''" style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: rgb(255, 255, 255); background-position: initial initial; background-repeat: initial initial; "> ][/code]
学习!
无·法 2011-02-21
  • 打赏
  • 举报
回复
[Quote=引用楼主 hao33892 的回复:]
听说VB 编译成EXE后是忽略掉Debug 语句的,可是我测试了一下发现Debug 语句是编译进去的。
是不是还要设置什么的?
我的程序里面用了很多Debug ,一条条删很麻烦..
[/Quote]确实是忽略的,给出你详细的测试代码,来证明你的观点“发现Debug 语句是编译进去的”。

请用以下代码测试:
Private Sub Form_Load()
Debug.Print 1 / 0
End Sub

在ide下运行会报错,但是编译成exe后运行是不会报错的,以上足可以说明“VB 编译成EXE后是忽略掉Debug 语句的”。

至于多了几条debug语句后编译后的exe文件就会大些也并不能说明就是debug编译进去了,最多是这些debug语句影响了编译的编译,带入了一些垃圾代码。另外至于什么PE加壳工具压缩后大小一样也并不能说明什么,除非用compare it或者beyond compare等文件比较工具进行二进制比较后确认差不多一样才行。
mokton 2011-02-21
  • 打赏
  • 举报
回复
结贴给分吧!嘎嘎!
chenxdao 2011-02-21
  • 打赏
  • 举报
回复
替换这个方法简单呵
东方之珠 2011-02-21
  • 打赏
  • 举报
回复
1、编写程序时,尽量不要用弹出窗口显示结果,要用标签或者文本框显示,否则会破坏应用程序的可视化界面!
2、调试程序,特别是变量值的结果,尽量用debug.print在立即窗口中显示结果值,这样编译器才会忽略debug.print。
小小小菜鸟_ 2011-02-21
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 mokton 的回复:]
Ctrl + H
查找内容:Debug.Print
替换为:'Debug.Print
搜索:当前工程
全部替换
OK
[/Quote]
这方法不错..替换回来也方便。
找到个条件编译的。感觉比替换还麻烦。

条件编译指令:#If...Then...#Else

Private Const IsDebug   As Boolean = True
Private Sub Form_Load()
#If IsDebug Then
Debug.Print ("xxxxxxxxxxxxxxxx")
#End If
End Sub
vbman2003 2011-02-21
  • 打赏
  • 举报
回复
替换一下也不麻烦,不想替换可以使用条件编译,在msdn中搜索一下.....
mokton 2011-02-21
  • 打赏
  • 举报
回复
Ctrl + H
查找内容:Debug.Print
替换为:'Debug.Print
搜索:当前工程
全部替换
OK
东方之珠 2011-02-21
  • 打赏
  • 举报
回复
Debug.Print 弹出窗口显示的是要编译进EXE的,编译器只忽略在立即窗口显示的结果。
东方之珠 2011-02-21
  • 打赏
  • 举报
回复
你用到函数,把函数去了就可以了。debug.print中不能用任何函数,我看了,确实如你所说。
andy95800 2011-02-21
  • 打赏
  • 举报
回复
谁说debug.print不编译进exe了
是作为垃圾码编译的
pe压缩软件很重要的功能之一就是删除这些垃圾码
不信的可以试验 第一个exe 包含
Debug.Print test
Debug.Print MsgBox("IDE")
Debug.Print "xxxxxxxxxxxxxx"
编译后16k大小
第二个exe包含
上述的三行代码重复200次
编译后将达到40k左右
但如果用pe压缩软件压缩这两个exe后大小是一摸一样的
Tiger_Zhao 2011-02-21
  • 打赏
  • 举报
回复

不编译的是 Debug.Assert 语句,Debug.Print 只是不输出结果。
小小小菜鸟_ 2011-02-21
  • 打赏
  • 举报
回复
不可能我的VB 有问题吧??
我的确是编译成EXE后 ,然后再运行EXE的。
以下是测试代码:

Function test()
MsgBox 8
End Function

Private Sub Command1_Click()
Debug.Print test
Debug.Print MsgBox("IDE")
Debug.Print "xxxxxxxxxxxxxx"
End Sub


无论是执行函数还是字符串都编译进去了。用16进制查看工具也能看到字符串xxxxxxxxxxxxxx
工程与EXX下载: http://u.115.com/file/f8addf4db0
Tiger_Zhao 2011-02-21
  • 打赏
  • 举报
回复
你是编译成 exe 后还是在 VB-IDE 中点执行吧?
只要是在 VB-IDE 中执行,就一直是调试模式,即时编译即时运行,不会用到已编译的 exe。
东方之珠 2011-02-21
  • 打赏
  • 举报
回复
可以测试一下:debug.print msgbox("IDE")
编译时通过运行库运行不应该出现。
加载更多回复(2)

7,789

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧