Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [cdt-dev] launching a gdb from inside a docker container using DSF/GDB

> Here's what I'm trying to do that is not succeeding:
> I am trying to launch a gdb binary that resides in a docker container by
> setting my gdb binary to :
> docker-exec -i linux_gdb /usr/bin/gdb
> 
> This fails with:
> cannot enable tty mode on non tty input
> 
> on both the gdb -version check and the actual --mi call.
> 
> The code that launches gdb does not seem to have a tty/pty  attached to it.
> There is code in the spawner class that seems to have this option but that
> is not being used by the gdb launcher.
> 
> Is there some way to accomplish this?

I'm able to reproduce this error if I launch with '-i -t' using
java.lang.Runtime's process launcher. Are you sure you were using just '-i' ?
When I disabled my '-t' option I was getting output from gdb.

I haven't been playing around with this approach so can't really say what's
going on but perhaps someone who knows Spawner better might have some hints.


> -----
> why I care is below in case people are wondering:
> We have linux based docker containers that have cross toolchains for various
> targets installed in them. They also contain gdb for that architecture.  Our
> longer term goal is to have metadata in the toolchain containers so that
> they can "tell" the plugin what their capabilities are and so a limited
> cross toolchain configuration UI can be constructed on the fly based on the
> toolchain container the user has chosen.
> 
> We would like to be able to use the cross toolchains in the container. We are
> accomplishing this currently using a native stub dispatcher and an Eclipse
> builder.  This works currently.
> 
> We would also like to be able to use the gdb inside the docker container as
> the gdb executable which Eclipse connects to.  The workspace is bind mounted
> into the container so the gdb inside the container can see the sources and
> binaries.  This works fine when we are executing from a shell environment
> (CLI mode). However, when we are executing it via eclipse (if we do
> something like gdb = docker exec -I <debug_container> gdb-x86-64) we get
> failures due to the lack of a tty available to the gdb inside the container.

Have you considered having a gdb-server within the container and simply
connecting to it through a remote debug session ? This should bypass the
issue you're having with the TTY, and is also similar to the approach the
CDT's Container Debugging support took [1].

Cheers,
-- 
Roland Grunberg

[1] https://wiki.eclipse.org/CDT/User/NewIn87#Docker_support


Back to the top