调试Visual Basic运行时错误5

Tho*_*ler 2 vb6 windbg

我有一个Visual Basic 4 32位应用程序,导致a

Run-time error '5':
Invalid procedure call
Run Code Online (Sandbox Code Playgroud)

我启动WinDbg并做

sxe *
Run Code Online (Sandbox Code Playgroud)

打破所有例外.但是,它会在不破坏调试器之前显示消息.

如果我在消息发生时中断,则callstack不是很有用.在问题发生时,是否有一个闯入Visual Basic 4应用程序的技巧?

问题FAQ:

  • 你可以在IDE中运行它吗?
    是的,我可以,当我这样做时,我可以解决这个问题.但是,我想在最终用户运行应用程序时获取更多信息,这样我就不需要能够重现它了.

  • 如果您发现错误原因,您想做什么?
    嗯,这取决于错误的类型.也许我可以解决它,也许我不能.通常我会从WinDbg中获得一些非常有用的信息.

  • 什么时候发生错误?
    当用户按下表单上的关闭按钮时,它会重复出现.

  • 该应用程序做什么?
    哦,这是一个很好的问题.我不知道.它使用RS232通信,但尚未涉及.

  • 您对用户可以输入的数据了解吗?
    我几乎一无所知.在这种特殊情况下,没有必要输入数据.

小智 5

错误来自VB虚拟机而不是来自API.我无法看到WinDbg如何在VB4上有用,它被解释并且在P-Code中.

Visual Basic运行时错误5表示以下之一:

  • 输入了无效的集合或属性名称.
  • out参数为NULL.
  • 该值不是受支持的值之一或超出支持的范围.
  • 该物业是只读的.
  • 创建对象后无法更改该属性.
  • 输入了无效索引.

如果它是一个API调用VB使用LoadLibraryGetProcAddress.

一些控件随着时间的推移丢失了默认值,这可能导致第一个.

如果现代技术超出了程序的预期,例如磁盘空间,第三种情况就会发生.

另见(抱歉没有链接,它们在我的硬盘上)

Q131007 HOWTO:在Visual Basic中使用Windows NT WinDbg.exe(适用于NT 3.5)

Q166275 HOWTO:在VC++中调试本机代码Visual Basic组件(在调试器中讨论VB中可以看到的内容)

VB4不能制作符号