如何在运行时启用或禁用断点?我正在编写一个测试工作台应用程序,它可以运行其他.net代码来调试插件。工作台应用程序本身是不可调试的(DebuggableNonUserCodeAttribute),但它调用的用户代码应该是可调试的。但是,在运行时的某些情况下,不应该使用用户代码断点。
我可以想象实现这一目标的各种方法,但许多方法可能是不可能的:
1)以编程方式附加和分离调试器
2)以编程方式启用和禁用所有断点(最好本地化到程序集或类)
3)在运行时使用DebuggableNonUserCodeAttribute动态修饰和取消修饰方法。
4)以某种方式将选定堆栈框架之外的线程的整个代码分支标记为调试器的“非断点”。DebuggableNonUserCodeAttribute似乎只能在方法或类中工作,但不会影响下游代码的可调试性。
编辑:为了澄清:在运行时,同一段最终用户代码将由宿主可执行文件多次运行,其中一些地方应该支持断点,而另一些地方不应该支持断点。要求用户修改此功能的代码或要求用户设置条件断点是不合适的。
发布于 2010-01-08 05:36:28
您可以通过DTE自动化对象模型的调试器部分执行#1和#2。
How to enable/disable Breakpoints via DTE
How to attach the debugger via DTE
发布于 2010-01-07 06:03:22
您可以使用System.Diagnostics.Debugger.Break()而不是设置断点。只要把方法调用放在if块中就行了。
https://stackoverflow.com/questions/2016554
复制相似问题