[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
Re: [cdt-dev] Customizing debug hierarchy and LaunchVMAdapter
|
The patch looks interesting in its simplicity.
Because of the 8.5 release I won't have time to try it right away.
Could you modify the patch on the Gerrit review to use your suggestion
and see if it works?
Thanks!
> -----Original Message-----
> From: cdt-dev-bounces@xxxxxxxxxxx [mailto:cdt-dev-bounces@xxxxxxxxxxx]
> On Behalf Of Vladimir Prus
> Sent: Friday, September 12, 2014 4:47 AM
> To: cdt-dev@xxxxxxxxxxx
> Subject: Re: [cdt-dev] Customizing debug hierarchy and LaunchVMAdapter
>
>
> Yeah, GdbExtendedAdapterFactory is 400 lines of copy-paste ;-)
>
> I did succeed in extending it without repeating code, per patch below - is it
> about right?
>
> Note that so far I've tweaked label for threads - so I might run into more
> troubles further.
>
> - Volodya
>
> On 09/12/2014 12:24 AM, Marc Khouzam wrote:
> > This is exactly what I was hoping to figure out. I've posted an example that
> extends DSF-GDB.
> > This is how I got things to work, but this is my first try at actually extending
> it.
> > http://eclip.se/441277
> >
> > I also had a lot of trouble extending GdbAdapterFactory.
> >
> > I was hoping others could provide feedback on what Vladimir is
> > describing below to see if there is a better way as of now.
> >
> > From what I tried, we are good at extending the DSF services and
> > handling GDB versions, but we need to improve on allowing extension of
> the view model.
> >
> > Vladimir seems to have experienced the same results.
> >
> > Anyone else?
>
> Index:
> org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/GdbAdapt
> erFactory.java
> ==========================================================
> =========
> ---
> org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/GdbAdapt
> erFactory.java (revision 436379)
> +++
> org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/GdbAdapt
> erFactory.java (working copy)
> @@ -70,6 +70,7 @@
> import org.eclipse.cdt.dsf.gdb.launching.GdbLaunch;
> import org.eclipse.cdt.dsf.gdb.launching.GdbLaunchDelegate;
> import org.eclipse.cdt.dsf.service.DsfSession;
> +import org.eclipse.cdt.dsf.ui.viewmodel.AbstractVMAdapter;
> import org.eclipse.cdt.ui.text.c.hover.ICEditorTextHover;
> import org.eclipse.core.runtime.IAdapterFactory;
> import org.eclipse.debug.core.DebugPlugin;
> @@ -106,7 +107,7 @@
> @Immutable
> class SessionAdapterSet {
> final GdbLaunch fLaunch;
> - final GdbViewModelAdapter fViewModelAdapter;
> + final AbstractVMAdapter fViewModelAdapter;
> final DsfSourceDisplayAdapter fSourceDisplayAdapter;
> final DsfStepIntoCommand fStepIntoCommand;
> final DsfStepIntoSelectionCommand fStepIntoSelectionCommand; @@
> -147,7 +148,7 @@
> fSteppingController = new SteppingController(session);
> session.registerModelAdapter(SteppingController.class,
> fSteppingController);
>
> - fViewModelAdapter = new GdbViewModelAdapter(session,
> fSteppingController);
> + fViewModelAdapter = createViewModelAdapter(session,
> + fSteppingController);
> session.registerModelAdapter(IViewerInputProvider.class,
> fViewModelAdapter);
>
> if (launch.getSourceLocator() instanceof ISourceLookupDirector) {
> @@ -429,4 +430,9 @@
> public void launchesChanged(ILaunch[] launches) {
> }
>
> + protected AbstractVMAdapter createViewModelAdapter(DsfSession
> session, SteppingController steppingController)
> + {
> + return new GdbViewModelAdapter(session, steppingController);
> + }
> +
> }
> Index:
> org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/viewmod
> el/launch/LaunchVMProvider.java
> ==========================================================
> =========
> ---
> org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/viewmod
> el/launch/LaunchVMProvider.java (revision 436379)
> +++
> org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/viewmod
> el/launch/LaunchVMProvider.java (working copy)
> @@ -57,7 +57,11 @@
> {
> super(adapter, presentationContext, session);
>
> - IRootVMNode launchNode = new LaunchRootVMNode(this);
> + createNodes();
> + }
> +
> + protected void createNodes() {
> + IRootVMNode launchNode = new LaunchRootVMNode(this);
> setRootNode(launchNode);
>
> // Container node to contain all processes and threads @@ -70,7 +74,7
> @@
>
> IVMNode stackFramesNode = new StackFramesVMNode(this,
> getSession());
> addChildNodes(threadsNode, new IVMNode[] { stackFramesNode });
> - }
> + }
>
> @Override
> protected boolean canSkipHandlingEvent(Object newEvent, Object
> eventToSkip) {
>
>
> --
> Vladimir Prus
> CodeSourcery / Mentor Graphics
> http://www.mentor.com/embedded-software/
> _______________________________________________
> cdt-dev mailing list
> cdt-dev@xxxxxxxxxxx
> To change your delivery options, retrieve your password, or unsubscribe
> from this list, visit https://dev.eclipse.org/mailman/listinfo/cdt-dev