如何使用vc调试vb编译出来的应用程序?

fangyc 2007-12-10 02:28:59
我听说有人说的可以使用vc调试vb编译出来的应用程序。而且说的当vb出错的时候,vc可以指出是在vb的那个语句上出错的。
因为我在vb中已经不能通过on error goto 的方法去拦截到出错的地方了,应用程序在运行的时候会直接崩溃掉的,所以需要用第三方软件来配合我调试崩溃错误。
请有调试经验的高手指教,先在这里感谢了!
...全文
110 点赞 收藏 8
写回复
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
fangyc 2007-12-11
谢谢,jwh2004 !
我已经通过了其他的办法进行你说的这种方式打印了.可是效果不佳,因为代码太多了,实在是要设定的地方也太多了.
那么如果是这样崩溃的程序,大家还有别的调试的方法吗?

如果是用VC++进行调试的,是否有一些什么好点的方法和教材,能马上学会如何调试错误的,因为比较急,请大家多多指教!
回复
jwh2004 2007-12-11
一般是不行的,如果你确实需要这样的功能,可以从微软或其它网站下载一个DebugView调试工具安装到计算机中,
在vb中用类似下面的方法调用
Option Explicit
'vb中DebugView工具的使用
Private Declare Sub OutputDebugString Lib "kernel32" Alias "OutputDebugStringA" (ByVal lpOutputString As String)

Private Sub Command1_Click()
Dim s As String
s = "这是一个 DebugView工具的测试!" & Chr(13) & _
"请先将DebugView工具软件打开"
Call OutputDebugString(ByVal s)
Call OutputDebugString(ByVal "测试结束!")
End Sub

然后打开DebugView工具看输出结果字符串就可。在vb程序的每个可能出错的地方放置OutputDebugString函数输出一个标志,当程序出错时,看标志停在那个地方就说明那个地方后面紧跟的代码出错了。

回复
fangyc 2007-12-11
非常感谢!
我去下载一个试试!
我的winsock回收的会调用unload的.
回复
调用很多WINSOCK......不会是太多了让堆栈溢出了吧.....

你对于没有使用的WINSOCK是不是有回收?

OD全称OllyDbg,是众多调试器之一,我个人比较喜欢这个....

这里有介绍及下载:

http://www.pediy.com/tools/Debuggers.htm
回复
fangyc 2007-12-11
请问 OD是个什么软件,具体名称是什么?
是的我现在的应用程序就有的时候碰到了连对话框都不出现的程度了.呵呵.
我的代码中,hook,多线程,复制内存都无用到.只是调用了很多的winsock控件.是动态加载的.
用的是load winsock(i).
回复
可以使用OD进行跟踪.

你直接用OD执行被调试程序,然后程序出错时自然会被OD捕捉到

这个时候你看看堆栈和各寄存器以及当前内存中,有没有什么信息可以让你找到问题所在...

至于你所说的那种"应用程序在运行的时候会直接崩溃掉的",是不是你在VB代码里面使用了子类化或者HOOK,多线程,复制内存等手法?

这些操作如果有问题,都有可能让程序直接崩溃,有时连非法操作的那个对话框都不会弹出来的.
回复
fangyc 2007-12-10
要从汇编语言推回去找代码不是疯了.有没有容易点的办法直接定位代码出错地方的?
回复
of123 2007-12-10
除非你对汇编很熟,基本上没有什么意义。况且,遇到崩溃的情况,VC++ 也拦截不到。
回复
发动态
发帖子
VB基础类
创建于2007-09-28

7451

社区成员

VB 基础类
申请成为版主
社区公告
暂无公告