调试.NET中的调用函数
我使用Reflection(Method.Invoke)在.NET中调用函数。如果在此方法内发生错误并引发异常,则调试器不显示实际的代码,而是在Invoke()调用中停止。我可以从InnerException中检索异常信息,但与使用callstack进行常规调试等相比,这非常不方便。可以使用Method.Invoke调用的方法像常规函数调用一样调试吗?调试.NET中的调用函数
我的解决办法是建立内部Tick()
定时器和呼叫方法:
GUI代码 - >通过Method.Invoke通话功能 - >功能设置一定时器 - >蜱有函数体
可惜这不是很漂亮(,不适合在某些情况下)
你喜欢的是“Just My Code”功能。调试器默认将调试限制为开发人员认为已编写的代码。这可以减少在调试WPF或WinForms启动时会出现的大量噪音。
为了让像Exception助手这样的项目运行所有代码,您应该禁用Just My Code。
- 工具 - >选项
- 调试
- 取消选中“启用仅我的代码调试”
如果一切都失败了,你也可以把这样的事情成被调用的方法:
#if DEBUG
System.Diagnostics.Debugger.Break();
#endif
这将基本上“以编程方式”在那里引起断点。
你也可以把它做稍微好一点:
if(Debugger.IsAttached)
Debugger.Break();
所以,如果你实际上是在调试器中运行它,它会只有突破。
编辑:
月2思想,如果你的代码进行编辑,那么你可能只是坚持经常有断点的VisualStudio通过。我想我的答案是没有意义的...对不起:)
您的回答非常有意义,请参阅@ JaredPar的回答。我遇到了跳过断点和您的方法奏效的问题。 – ajeh 2016-07-04 15:31:04
不幸的是,“启用仅我的代码”已经选中。但它似乎无关紧要,因为呼叫者和被呼叫者实际上都是我的代码。 – John 2011-05-16 23:30:57
@John,那很奇怪。我的下一步是打开所有异常类型的“break break”,并查看是否将我抛弃了我的预期。这不会解决你的问题,但它会让我们更进一步。 – JaredPar 2011-05-16 23:33:07
这是非常奇怪的,在打开“break on throw”之后,我得到了未能加载的XmlSerializer程序集的FileNotFound异常。没有“投掷”,一切正常。 – John 2011-05-16 23:39:38