добавление новой команды в gdb при использовании cdt eclipse - PullRequest
0 голосов
/ 07 сентября 2011

Добрый день, Я пишу вам, потому что я пытался следовать вашим инструкциям [здесь: http://wiki.eclipse.org/CDT/cdt-debug-dsf-gdb-extensibility] для добавления новой команды в gdb при использовании cdt eclipse. Я, кажется, не работает вообще. Я помещаю операторы print во все методы всех расширенных классов. Ничего не печатается, что указывает на то, что ни один из этих методов не вызывается. Ниже мой код. Что мне не хватает? (Я не дошел до фактической реализации новой фабрики услуг, так как я там

plugin.xml:

<plugin>
  <extension
         point="org.eclipse.debug.core.launchDelegates">
      <launchDelegate
            delegate="tracerdubug.MyTracerLaunchDelegate"
            id="TracerDubug.MyTracerLaunchDelegate"
            modes="debug, run">
      </launchDelegate>
   </extension>
</plugin>
TracerRunControl:
public class TracerRunControl extends GDBRunControl_7_0 {

    public TracerRunControl(DsfSession session) {
        super(session);
        System.out.println("TracerRunControl");
    }

}

// ############################################# ###################

public class MyTracerLaunchDelegate extends GdbLaunchDelegate implements ILaunchConfigurationDelegate2{

    public MyTracerLaunchDelegate() {
        super();
        System.out.println("MyTracerLaunchDelegate::ctr()");
    }


    @Override
    public void launch( ILaunchConfiguration config, String mode, ILaunch launch, IProgressMonitor monitor ) throws CoreException {
        System.out.println("MyTracerLaunchDelegate::launch()");      
super.launch(config, mode, launch, monitor);     
    }


    @Override
    protected IDsfDebugServicesFactory newServiceFactory(String version) {
        System.out.println("MyTracerLaunchDelegate");
        return new TracerDebugServicesFactory(version);
    }
}

// ############################################# ###################

public class TracerDebugServicesFactory extends GdbDebugServicesFactory {

    public TracerDebugServicesFactory(String version) {
        super(version);
        // TODO Auto-generated constructor stub
    }

    @Override
    protected ICommandControl createCommandControl(DsfSession session, ILaunchConfiguration config) {
        GDBControl_7_0 g = new GDBControl_7_0(session,config);
        System.out.println("TracerDebugServicesFactory::createCommandControl");
        return g;
    }

    @Override
    protected IRunControl createRunControlService(DsfSession session) {
        System.out.println("TracerDebugServicesFactory::createProcessesService");
        return new TracerRunControl(session);  
    }

    @Override
    protected IProcesses createProcessesService(DsfSession session) {
        System.out.println("TracerDebugServicesFactory::createProcessesService");
       return new GDBProcesses_7_0(session);
    }
}

Спасибо, Шай

1 Ответ

0 голосов
/ 08 сентября 2011

У меня была такая же проблема, и я получил ответ с другого форума.Вы должны добавить больше информации и больше расширений:

<extension
point="org.eclipse.debug.core.launchDelegates">
      <launchDelegate

    delegate="tracerdubug.MyTracerLaunchDelegate"
             delegate="Tracerdubug.MyTracerLaunchDelegate"
            delegateDescription="Your description"
            id="org.eclipse.cdt.dsf.gdb.launch.localCLaunch"
            modes="debug"
            name="My GDB Launch Delegate"
            sourceLocatorId="org.eclipse.cdt.debug.core.sourceLocator"
            sourcePathComputerId="org.eclipse.cdt.debug.core.sourcePathComputer"
            type="org.eclipse.cdt.launch.applicationLaunchType">
      </launchDelegate>
   </extension>
   <extension point="org.eclipse.debug.ui.launchConfigurationTypeImages">
            <launchConfigurationTypeImage
            icon="icons/img.gif"
            configTypeID="Tracerdubug.MyTracerLaunchDelegate"
            id="Tracerdubug.TabGroups.launcher.Image">
        </launchConfigurationTypeImage>
    </extension>
    <extension point="org.eclipse.debug.ui.launchConfigurationTabGroups">
        <launchConfigurationTabGroup
            type="Tracerdubug.MyTracerLaunchDelegate"
            class="Tracerdubug.TabGroups.TabGroupTest"
            id="Tracerdubug.TabGroups.TabGroupTest">
        </launchConfigurationTabGroup>
     </extension>

, и вам нужен новый класс = Tracerdubug.TabGroups.TabGroupTest:

package Tracerdubug.TabGroups;

import org.eclipse.cdt.dsf.gdb.internal.ui.launching.CDebuggerTab;
import org.eclipse.cdt.dsf.gdb.internal.ui.launching.CMainAttachTab;
import org.eclipse.cdt.dsf.gdb.internal.ui.launching.AttachCDebuggerTab;
import org.eclipse.cdt.launch.ui.CArgumentsTab;
import org.eclipse.debug.ui.AbstractLaunchConfigurationTabGroup;
import org.eclipse.debug.ui.CommonTab;
import org.eclipse.debug.ui.EnvironmentTab;
import org.eclipse.debug.ui.ILaunchConfigurationDialog;
import org.eclipse.debug.ui.ILaunchConfigurationTab;
import org.eclipse.debug.ui.sourcelookup.SourceLookupTab;
public class TabGroupTest extends AbstractLaunchConfigurationTabGroup {

    // Create an array of tabs to be displayed in the debug dialog
    public void createTabs(ILaunchConfigurationDialog dialog, String mode) {
        ILaunchConfigurationTab[] tabs = 
            new ILaunchConfigurationTab[] {,
                new CMainAttachTab(),
                new CArgumentsTab(),
                new EnvironmentTab(),
                new SourceLookupTab(),
                new CommonTab(),
            };
        setTabs(tabs);
    }
}

Вы также можете создавать свои собственные вкладки, см .:http://www.eclipse.org/articles/Article-Launch-Framework/launch.html

Моя фабрика команд загружена, сейчас я изучаю, как использовать существующий сервис для отправки команды ...

...