我使用Reflection(Method.Invoke)在.NET中调用函数。如果此方法中发生错误并引发异常,调试器不会显示实际代码,而是在 Invoke() 调用时停止。我可以从 InnerException 中检索异常信息,但与具有可用调用堆栈等的常规调试相比,这非常不方便。使用 Method.Invoke 调用的方法是否可以像常规函数调用一样进行调试?
你喜欢点击的是"Just My Code"功能。 默认情况下,调试器将调试限制为被视为由开发人员创作的代码。 这减少了调试 WPF 或 WinForms 启动时存在的大量噪音。
为了使异常助手之类的项适用于所有代码,您应该禁用"仅我的代码"。
- 工具 ->选项
- 调试器
- 取消选中"仅启用我的代码调试"
如果所有其他方法都失败了,你也可以把这样的东西放到被调用的方法中:
#if DEBUG
System.Diagnostics.Debugger.Break();
#endif
这基本上会"以编程方式"导致那里的断点。
你也可以通过做以下事情让它稍微好一点:
if(Debugger.IsAttached)
Debugger.Break();
这样,只有当您在调试器中实际运行它时,它才会中断。
编辑:
第二个想法,如果你有代码来编辑它,那么你可能可以通过VisualStudio在那里粘贴一个常规断点。我想我的答案没有意义...对不起:)
我的解决方法是在Tick()
中创建计时器并调用方法:
GUI 代码 -> 通过 Method.Invoke 调用函数 -> 函数设置计时器 -> 在 Tick 中有函数体
不幸的是,它不是很漂亮(在某些情况下不适合)