[英]How to change the text in the thread group display in CDT-based eclipse debugger?
I have a CDT-based debugger and want to add some information into the lettering in the thread node. 我有一个基于CDT的调试器,并希望在线程节点中的字母中添加一些信息。 I want the lettering surrounded by the red rectangle to display some additional information (see screenshot below).
我希望红色矩形包围的字母显示一些额外的信息(见下面的截图)。
AFAIR, the format string for this label is set in the property ThreadVMNode_No_columns__text_format
in file C:\\Users\\...\\workspace\\org.eclipse.cdt.dsf.gdb.ui\\src\\org\\eclipse\\cdt\\dsf\\gdb\\internal\\ui\\viewmodel\\launch\\MessagesForGdbLaunchVM.properties
. AFAIR,此标签的格式字符串在文件
C:\\Users\\...\\workspace\\org.eclipse.cdt.dsf.gdb.ui\\src\\org\\eclipse\\cdt\\dsf\\gdb\\internal\\ui\\viewmodel\\launch\\MessagesForGdbLaunchVM.properties
中的属性ThreadVMNode_No_columns__text_format
中设置C:\\Users\\...\\workspace\\org.eclipse.cdt.dsf.gdb.ui\\src\\org\\eclipse\\cdt\\dsf\\gdb\\internal\\ui\\viewmodel\\launch\\MessagesForGdbLaunchVM.properties
。
# {0} - name available, 0=not available/1=available
# {1} - name
# {2} - ID available, 0=not available/1=available
# {3} - ID
# {4} - OS Thread ID available, 0=not available/1=available
# {5} - OS Thread ID
# {6} - Core available, 0=not available/1=available
# {7} - Core
# {8} - 0=running/1=suspended
# {9} - state change reason available, 0=not available/1=available
# {10} - state change reason
# {11} - state change details available, 0=not available/1=available
# {12} - state change details
ThreadVMNode_No_columns__text_format={0,choice,0#Thread|1#{1}}{2,choice,0#|1# [{3}]}{4,choice,0#|1# {5}}{6,choice,0#|1# [core: {7}]} ({8,choice,0#Running|1#Suspended}{9,choice,0#|1# : {10}}{11,choice,0#|1# : {12}})
This format string is used in method org.eclipse.cdt.dsf.gdb.internal.ui.viewmodel.launch.ThreadVMNode.createLabelProvider()
: 此格式字符串用于方法
org.eclipse.cdt.dsf.gdb.internal.ui.viewmodel.launch.ThreadVMNode.createLabelProvider()
:
public class ThreadVMNode extends AbstractThreadVMNode
implements IElementLabelProvider, IElementMementoProvider
{
[...]
@Override
protected IElementLabelProvider createLabelProvider() {
PropertiesBasedLabelProvider provider = new PropertiesBasedLabelProvider();
provider.setColumnInfo(
PropertiesBasedLabelProvider.ID_COLUMN_NO_COLUMNS,
new LabelColumnInfo(new LabelAttribute[] {
// Text is made of the thread name followed by its state and state change reason.
new GdbExecutionContextLabelText(
MessagesForGdbLaunchVM.ThreadVMNode_No_columns__text_format,
new String[] {
ExecutionContextLabelText.PROP_NAME_KNOWN,
PROP_NAME,
ExecutionContextLabelText.PROP_ID_KNOWN,
ILaunchVMConstants.PROP_ID,
IGdbLaunchVMConstants.PROP_OS_ID_KNOWN,
IGdbLaunchVMConstants.PROP_OS_ID,
IGdbLaunchVMConstants.PROP_CORES_ID_KNOWN,
IGdbLaunchVMConstants.PROP_CORES_ID,
ILaunchVMConstants.PROP_IS_SUSPENDED,
ExecutionContextLabelText.PROP_STATE_CHANGE_REASON_KNOWN,
ILaunchVMConstants.PROP_STATE_CHANGE_REASON,
ExecutionContextLabelText.PROP_STATE_CHANGE_DETAILS_KNOWN,
ILaunchVMConstants.PROP_STATE_CHANGE_DETAILS}),
AFAIK in order to add a new piece of information to the display it is necessary to AFAIK为了向显示器添加新的信息是必要的
MessagesForGdbLaunchVM.properties
and MessagesForGdbLaunchVM.properties
和 GdbExecutionContextLabelText
. GdbExecutionContextLabelText
的调用中将新字符串添加到字符串数组中。 What is the best way to do both these things (preferably not changing the code of the Eclipse/CDT core classes) ? 执行这两项操作的最佳方法是什么(最好不要更改Eclipse / CDT核心类的代码)?
Update 1 (12.09.2014 19:56 MSK): Tried to use a custom debug presentation model by adding an extension, but the class MyCompanyDebugModelPresentation
is not called anyhwere. 更新1(12.09.2014 19:56 MSK):试图通过添加扩展来使用自定义调试表示模型,但是类
MyCompanyDebugModelPresentation
不会被称为anyhwere。
<extension
point="org.eclipse.debug.ui.debugModelPresentations">
<debugModelPresentation
class="com.mycompany.internal.debug.ui.model.MyCompanyDebugModelPresentation"
id="com.mycompany.internal.debug.ui.model.MyCompanyDebugModelPresentation">
</debugModelPresentation>
</extension>
In order to modify the text shown above, you need to modify a number of files and settings, which are shown in the matrix below. 要修改上面显示的文本,您需要修改一些文件和设置,如下面的矩阵所示。
You can read this image as follows: 您可以按如下方式阅读此图像:
org.eclipse.core.run.adapters
(start of the red line) so that it points to org.eclipse.core.run.adapters
(红线的起点),使其指向 GdbAdapterFactory
. GdbAdapterFactory
的子类。 GdbViewModelAdapter
etc. GdbViewModelAdapter
等的子类。 You go through that chain until you arrive at the ThreadVMNode
class (or your subclass), which determines what values are shown in the tree. 您将遍历该链,直到到达
ThreadVMNode
类(或您的子类),该类确定树中显示的值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.