【问题标题】:Add warning messages to ILineBreakpoint in Eclipse在 Eclipse 中向 ILineBreakpoint 添加警告消息
【发布时间】:2014-08-01 06:56:00
【问题描述】:

我为特定环境编写了自定义远程调试器。但是,远程环境执行了一些优化,移动或删除了原始代码,因此它不能接受所有断点。在调试器会话启动并连接到远程运行时之前,我们无法预测哪些断点无法设置。我想保留这些断点,因为它们是在编辑器中设置的,但是当调试器启动时,它必须以某种方式告诉用户某些断点无效。我认为这些断点应该看起来不同,但我还没有找到用于此目的的 API 方法。我尝试设置 IMarker 属性,例如 IMarker.PROBLEM 和 IMarker.SEVERITY,但没有帮助。最好的方法是什么?

【问题讨论】:

    标签: eclipse-plugin eclipse-pde


    【解决方案1】:

    Eclipse 调试器指南中的这段代码 sn-p 可能是您正在寻找的:

    public PDALineBreakpoint(IResource resource, int lineNumber) throws CoreException {
         IMarker marker = resource.createMarker(
             "org.eclipse.debug.examples.core.pda.lineBreakpoint.marker");
         setMarker(marker);
         setEnabled(true);
         ensureMarker().setAttribute(IMarker.LINE_NUMBER, lineNumber);
         ensureMarker().setAttribute(IBreakpoint.ID, IPDAConstants.ID_PDA_DEBUG_MODEL);
    }
    

    https://www.eclipse.org/articles/Article-Debugger/how-to.html

    【讨论】:

    • 问题是我没有声明自己的断点类。我改用现有的。其实就是IJavaLineBreakpoint。我想与不同的语言兼容,而不是依赖于某个断点类。但是第一次与 JDT 耦合将被接受以创建 Java 的概念证明。
    【解决方案2】:

    我自己找到了解决方案,但它看起来像一个肮脏的黑客。它仅适用于IJavaLineBreakpoint,对于另一种语言,需要另一种解决方案,但现在 Java 支持就足够了。 IJavaLineBreakpoint 有 isInstalled 方法来指示断点是否安装到某个 JVM 中。不幸的是,您无法直接修改此标志。内部实现只公开了org.eclipse.jdt.debug.core.installCount 属性的值。因此,要设置断点的 installed 属性,您应该执行以下操作:

    breakpoint.getMarker().setAttribute("org.eclipse.jdt.debug.core.installCount", 1);
    

    另外,你可以用同样的方法增加/减少这个属性。但是,我不确定这种方法是否兼容不同版本的 JDT。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多