2

在我的代码中设置断点如何允许以下代码完成,否则会失败。

这是问题所在。

我正在为 SAP B1 编写一个附加组件并遇到以下问题。

当我加载表单时,我想在表单矩阵中输入一些值。

但是如果没有断点(在加载表单的方法上设置),之后执行的部分代码将失败。那部分代码引用了一个尚未显示的矩阵,这会导致异常。这一切都很清楚。但是为什么设置断点“解决”了问题。

到底是怎么回事?

我怀疑我的断点在加载和显示我的表单和引用该表​​单元素的部分代码之间引入了一些延迟,但我可能是错的。

4

4 回答 4

2

在调试器下运行确实会减慢您的应用程序,并且即使没有断点也会经常隐藏竞争条件。当您引入断点时,它更有可能隐藏竞争条件。这类问题可能很难解决。您可能想要引入一些简单的日志记录(例如 log4net)来查看它正在发生的事情,而不会对应用程序产生太大影响,以至于您会看到不同的行为。请记住,即使是日志记录也足以改变事情。

于 2010-04-21T14:07:42.333 回答
1

有断点意味着每次在运行时加载模块时,Visual Studio 都会扫描模块以查找可能的断点位置。这必须引入延迟。

于 2010-04-21T14:06:55.590 回答
1

这是基于 Windows 窗体的应用程序吗?(恐怕我对 SAP B1 一无所知)尝试将您的代码放入表单的 Load 事件中,如果它不存在的话。一些控件在分配它们的句柄之前还没有准备好正确使用,这在 Windows 消息循环运行几次之前不会发生。

于 2010-04-21T14:13:04.393 回答
1

断点确实会引入一些延迟。断点是在程序常规执行中添加额外的指令。硬件和软件断点都为程序的执行添加了一些东西(尽管数量会有很大差异)。

http://en.wikipedia.org/wiki/Breakpoint

于 2010-04-21T14:22:01.027 回答