在Eclipse中向ILineBreakpoint添加警告消息

时间:2014-08-01 06:56:01

标签: eclipse-plugin eclipse-pde

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

2 个答案:

答案 0 :(得分:0)

Eclipse Debugger指南中的这段代码片段可能正是您所寻找的:

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

答案 1 :(得分:0)

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

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

此外,您可以以相同的方式增加/减少此属性。但是,我不确定这种方法是否与JDT版本兼容。