Vb6 调试Visual Basic运行时错误5
我有一个Visual Basic 4 32位应用程序,它会导致Vb6 调试Visual Basic运行时错误5,vb6,windbg,Vb6,Windbg,我有一个Visual Basic 4 32位应用程序,它会导致 Run-time error '5': Invalid procedure call 我启动WinDbg并执行 sxe * 打破所有例外。但是,它在显示消息之前不会中断调试器 如果在发送消息时中断,则调用堆栈不是很有用。在出现问题时,是否有办法闯入Visual Basic 4应用程序 常见问题解答: 您能在IDE中运行它吗? 是的,我可以,而且当我这样做的时候,我可能可以修复这个错误。但是,我希望在最终用户运行应用程序时获得更
Run-time error '5':
Invalid procedure call
我启动WinDbg并执行
sxe *
打破所有例外。但是,它在显示消息之前不会中断调试器
如果在发送消息时中断,则调用堆栈不是很有用。在出现问题时,是否有办法闯入Visual Basic 4应用程序
常见问题解答:
- 您能在IDE中运行它吗?
是的,我可以,而且当我这样做的时候,我可能可以修复这个错误。但是,我希望在最终用户运行应用程序时获得更多信息,这样我就不需要复制它了 - 如果找到错误的原因,您想做什么?
这取决于错误的类型。也许我能修好,也许我不能。通常我会从WinDbg获得一些非常有用的信息 - 错误何时发生?
当用户按下表单上的“关闭”按钮时,它会重复出现 - 应用程序的作用是什么?
哦,这是个好问题。我不太清楚。它使用RS232通信,但尚未涉及 - 您知道用户可以输入的数据吗?
我几乎一无所知。在这种特殊情况下,不需要输入数据
- 输入的集合或属性名称无效
- out参数为NULL
- 该值不是支持的值之一,或不在支持的范围内
- 该属性是只读的
- 创建对象后,无法更改属性
- 输入了无效的索引
LoadLibrary
和GetProcAddress
一些控件随着时间的推移会丢失默认值,这可能会导致第一个错误
第三种情况可能发生在现代技术超出程序预期的情况下,例如磁盘空间
另请参阅(抱歉,没有链接,它们在我的硬盘上)
(新台币3.5元)
(讨论在VB调试器中可以看到的内容)
VB4无法生成符号,因为当用户按下关闭按钮时会发生错误。我假设有一个(非常紧密的)循环正在运行,它没有收到预期的数据(可能是空字符串) 我预计该循环将持续从RS232设备读取数据,并且RS232处于正在关闭的状态,即使它不涉及连接可能已经打开并轮询 您应该做的是退出该循环并在关闭窗体之前关闭与RS232设备的连接。您可能可以在Form_Unload()事件中执行此操作,但也可能必须在该操作之前执行,因此您可能必须在关闭按钮的代码中执行此操作。。。但请确保用户不会使用X关闭表单
就我个人而言,我会在IDE中运行该程序,这将直接指向代码中出错的部分,并让您有机会查看相关变量的内容和控制状态。。。这比根据WinDbg的数据猜测要快得多你能在IDE中运行它吗?如果没有,如果发现错误的原因,您想做什么?错误是否总是发生,或者有时运行正常?错误发生的时间、程序启动的时间、执行特定操作的时间、关闭的时间。。。应用程序做什么,它是否与文件/系统文件/注册表一起工作,它是否使用串行(rs232)通信,它是否使用以太网通信?你知道用户可以输入的数据吗?我看不出windbg在vb4上有什么用处,vb4是解释的,并且是p代码。为什么不使用VB4调试器呢。有运行时符号,vb6可以制作应用程序的符号文件,也许vb4也可以。Invb6一个环境变量告诉VB6将符号放入应用程序,link=/pdb:none,但您仍然必须选择打开符号。错误来自VB虚拟机,而不是API。@Hrqls:我已经更新了问题。它是16位还是32位VB4应用程序。虚拟机似乎没有符号。@tonybd:它是32位的。我同意这可能是P代码的事情,我没有机会,除非我升级到VB6。如果你回答这个问题,我可以接受。注:39年前,比尔·盖茨和保罗·艾伦提出了这个错误信息。