我听说有人说的可以使用vc调试vb编译出来的应用程序。而且说的当vb出错的时候,vc可以指出是在vb的那个语句上出错的。
因为我在vb中已经不能通过on error goto 的方法去拦截到出错的地方了,应用程序在运行的时候会直接崩溃掉的,所以需要用第三方软件来配合我调试崩溃错误。
请有调试经验的高手指教,先在这里感谢了!

解决方案 »

  1.   

    一般是不行的,如果你确实需要这样的功能,可以从微软或其它网站下载一个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函数输出一个标志,当程序出错时,看标志停在那个地方就说明那个地方后面紧跟的代码出错了。
      

  2.   

    谢谢,jwh2004 !
    我已经通过了其他的办法进行你说的这种方式打印了.可是效果不佳,因为代码太多了,实在是要设定的地方也太多了.
    那么如果是这样崩溃的程序,大家还有别的调试的方法吗?如果是用VC++进行调试的,是否有一些什么好点的方法和教材,能马上学会如何调试错误的,因为比较急,请大家多多指教!
      

  3.   

    可以使用OD进行跟踪.你直接用OD执行被调试程序,然后程序出错时自然会被OD捕捉到这个时候你看看堆栈和各寄存器以及当前内存中,有没有什么信息可以让你找到问题所在...至于你所说的那种"应用程序在运行的时候会直接崩溃掉的",是不是你在VB代码里面使用了子类化或者HOOK,多线程,复制内存等手法?这些操作如果有问题,都有可能让程序直接崩溃,有时连非法操作的那个对话框都不会弹出来的.
      

  4.   

    请问 OD是个什么软件,具体名称是什么?
    是的我现在的应用程序就有的时候碰到了连对话框都不出现的程度了.呵呵.
    我的代码中,hook,多线程,复制内存都无用到.只是调用了很多的winsock控件.是动态加载的.
    用的是load winsock(i).
      

  5.   

    调用很多WINSOCK......不会是太多了让堆栈溢出了吧.....你对于没有使用的WINSOCK是不是有回收?OD全称OllyDbg,是众多调试器之一,我个人比较喜欢这个....这里有介绍及下载:http://www.pediy.com/tools/Debuggers.htm
      

  6.   

    非常感谢!
    我去下载一个试试!
    我的winsock回收的会调用unload的.