如何在我的代码中设置断点允许以下代码完成,否则将失败。
这是问题所在。
我正在为SAP B1编写附加组件并遇到以下问题。
当我加载表单时,我想在表格'矩阵中输入一些值。
但是没有断点(在加载表单的方法上设置),之后执行的代码部分将失败。该部分代码引用了尚未显示的矩阵,导致异常。这一点都很清楚。但是为什么设置一个断点“解决”了这个问题。
发生了什么事?
我怀疑我的断点在加载和显示我的表单和引用该表单元素的部分代码之间引入了一些延迟,但我可能是错的。
答案 0 :(得分:2)
在调试器下运行会降低您的应用程序速度,即使没有断点也会经常隐藏竞争条件。当您引入断点时,更有可能隐藏竞争条件。这些问题很难解决。您可能希望引入一些简单的日志记录(例如log4net)来查看它的运行情况,而不会影响应用程序,以至于您看到不同的行为。请记住,即使记录也足以改变事物。
答案 1 :(得分:1)
具有断点意味着每次在运行时加载模块时,Visual Studio都会扫描模块以查找可能断点的位置。这必须引入延迟。
答案 2 :(得分:1)
这是基于Windows窗体的应用程序吗? (我担心我对SAP B1一无所知) 尝试将代码放入表单的Load事件(如果尚未存在)。有些控件在分配了句柄后才能正常使用,直到windows消息循环运行几次才会发生。
答案 3 :(得分:1)
断点确实会引入一些延迟。断点是为程序定期执行添加额外指令。硬件和软件断点都为程序的执行添加了一些东西(尽管数量会有很大差异)。