代码之家  ›  专栏  ›  技术社区  ›  Jason Kleban

VSX:以编程方式在运行时禁用断点

  •  2
  • Jason Kleban  · 技术社区  · 16 年前

    如何在运行时启用或禁用断点?我正在编写一个测试工作台应用程序,它可以运行其他.NET代码来调试插件。工作台应用程序本身不是可调试的(debuggablenonusercodeattribute),而是它调用的用户代码。但是,在运行时的某些情况下,不应该遵循用户代码断点。

    我可以想象,实现这一目标的各种方法,很多都是不可能的:

    1)以编程方式附加和分离调试器
    2)以编程方式启用和禁用所有断点(最好本地化为程序集或类)
    3)在运行时使用debuggablenonusercode属性动态地修饰和取消修饰方法。
    4)不知何故,将所选stackframe之外的线程的整个代码分支标记为调试器的“不可断点”。debuggablenonusercodeattribute似乎只在方法或类内工作,但不影响下游代码的可调试性。

    编辑:为了澄清:在运行时,宿主可执行文件将多次运行同一段最终用户代码,其中一些应该遵守断点,而其他一些不应该遵守断点。要求用户为此功能修改其代码或要求用户设置条件断点是不合适的。

    2 回复  |  直到 16 年前
        1
  •  2
  •   Aaron Marten    16 年前

    您可以通过DTE自动化对象模型的调试器部分同时执行1和2。

    How to enable/disable Breakpoints via DTE

    How to attach the debugger via DTE

        2
  •  0
  •   user52596    16 年前

    你可以使用 System.Diagnostics.Debugger.Break() 而不是设置断点。只要把方法调用放在里面,不管是否需要块。

    推荐文章