gpt4 book ai didi

java - 如何在基于 CDT 的 eclipse 调试器中更改线程组显示中的文本?

转载 作者:搜寻专家 更新时间:2023-10-31 20:34:07 25 4
gpt4 key购买 nike

我有一个基于 CDT 的调试器,想在线程节点的字母中添加一些信息。我希望红色矩形包围的文字显示一些附加信息(请参见下面的屏幕截图)。

Screenshot

AFAIR,此标签的格式字符串在文件 C:\Users\...\workspace\org.eclipse.cdt.dsf.gdb 的属性 ThreadVMNode_No_columns__text_format 中设置。 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}})

此格式字符串用于方法 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}),

据我所知,为了向显示器添加一条新信息,有必要

  1. 覆盖格式字符串 MessagesForGdbLaunchVM.properties
  2. 在调用构造函数 GdbExecutionContextLabelText 时将新字符串添加到字符串数组中。

做这两件事的最佳方法是什么(最好不要更改 Eclipse/CDT 核心类的代码)?

更新 1(12.09.2014 19:56 MSK):尝试通过添加扩展来使用自定义调试演示模型,但类 MyCompanyDebugModelPresentation 未被调用.

   <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>

最佳答案

为了修改上面显示的文本,您需要修改一些文件和设置,如下表所示。

Morphology matrix

您可以按如下方式阅读此图像:

  1. 在您的项目中,指定扩展点org.eclipse.core.run.adapters(红线的开始),使其指向
  2. GdbAdapterFactory 的子类。
  3. 修改该类,使其返回 GdbViewModelAdapter 等的子类。

您遍历该链,直到到达 ThreadVMNode 类(或您的子类),它决定了树中显示的值。

关于java - 如何在基于 CDT 的 eclipse 调试器中更改线程组显示中的文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25808705/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com