我试图观察一个VB6应用程序的执行,我遇到了一个问题,因为一旦我输入调试器,然后点击Continue,它就不再允许我在到达另一个断点之前遍历代码。我想要能够执行一个程序,而不经过一些东西,直到我达到一个点,我想看到它的执行。理想情况下,这会产生按住键的效果,而我按下一个按钮以“进入”该功能。
提前感谢!
编辑:我知道我可以使用断点来停止执行。更清楚的是,问题是我不知道执行到哪里,所以我不能在那里设置断点(因为我不知道在哪里)。这就是为什么我本质上想要说,‘在我做完接下来的事情之后,不管发生什么,我都会崩溃’。听起来这个功能不存在,但我仍然在祈祷。
发布于 2008-11-14 08:23:43
当代码运行时,按ctrl+break (或IDE中的'VCR暂停‘按钮),然后按F8 (或从IDE中的Debug菜单中选择'Step in’)继续运行应用程序。下一个操作将导致执行中断。
请注意,造成中断的原因并不总是您希望的那样。特别恼人的是_MouseOver事件,它阻止您执行鼠标下压或计时器触发超出您所能执行的动作。在运行应用程序时,有些中断甚至可能是致命的,例如Windows消息已经挂起(子类)。还要考虑的是,在代码中可能没有一个事件处理程序(尚未)用于您的操作,因为它可能会中断。但通常这种技术可以确定您应该在何处设置断点。
发布于 2008-11-13 20:44:12
有一个停止语句可在VB6中使用,当语句从通过IDE运行的代码执行时,该语句将拖放到调试器中。(在编译发布版本时,只需确保从代码中删除所有停止语句。)
发布于 2008-11-14 16:59:08
您可以使用以下几种技术。
这两件事都被提到了
使用F8和Shift-F8执行程序。
添加停止(然后删除)
其他
使用全局变量创建集合。使用它作为一个堆栈,并有您感兴趣的子例程推送和弹出字符串。相反的,不要弹出任何东西,你就会得到踪迹。
使用手表在选择条件下监视和破坏。您可以设置几乎任何条件,以打破。
创建一个全局字符串,并在输入它们时设置您的过程。通过手表监视它。
在代码中使用Debug.Print。另外,与Stop不同的是,您可以在不影响生产代码的情况下保留这些代码。
使用“文件系统”对象创建用作日志的文本文件。
有时,问题只发生在已编写的版本中,然后您需要使用MsgBox或对文本文件进行日志记录。MsgBox可以改变复杂用户与表单交互的行为。
这些都是我在调试应用程序时使用的技术。如果我必须监视一个应用程序,我将使用Debug.Print。如果这不能实现编译,那么就登录到文本文件中。
如果您正在进行一些非常复杂的事情,那么我建议将所有代码从事件中移到实现命令模式的类中。您的命令类应该通过和接口与表单交互。
在命令类的Execute方法中,您将看到以下内容
<save the current state>
<Do your original code>
<save the modified state>
<push the command onto a stack>会发生的情况是,您最终得到了所有执行的命令(甚至是mouseover)的列表,其中包含了它们遇到的状态和修改后的状态。然后,您可以依次检查每个对象,以查看正在发生的事情。这几乎等同于创建撤消/重做。
注意,但是,像MouseOver这样的东西可以在命令堆栈上推送很多类,所以您必须仔细地构造测试,否则就会被信息超载。记住,您可以跳过将命令推到堆栈上。
使用命令的缺点是,从调试到重新设计。你将决定这个问题是否值得这样做。
https://stackoverflow.com/questions/288142
复制相似问题