[TxMt] Re: GDB integration in TextMate
Hans-Jörg Bibiko
bibiko at eva.mpg.de
Wed Mar 25 16:39:46 UTC 2009
On 25.03.2009, at 17:06, Mathieu Godart wrote:
> I'm still thinking on how to implement this debugger wrapper.
>
> To do so, I would need to create a thread in which GDB would be
> running. Ok, this is easy, but the tricky part is that I need to keep
> track of this thread (of its STD IOs, in fact) and I need this thread
> not to be killed when the TM command execution is done. And when a new
> command needs to be sent to GDB, I would need to send it to the STDIN
> of the thread and read back its STDOUT.
>
> Does someone have a hint for that? Or a bundle doing that where I
> could have a look?
Hmm, I do not know whether my hint could help because I have no
exhausted experiences of using gdb.
I wrote the bundle "R Console (Rdaemon)" http://svn.textmate.org/trunk/Bundles/R%20Console%20(Rdaemon).tmbundle
which allows to run a Terminal process (here R) inside of a TM doc.
This is done by spawning that process to an hidden terminal (pseudo-
terminal). This works because R has a (relatively) fixed prompt '> '.
[in short words how it works]
If the R process was started it prompts '> ' to signalise please enter
a task. In the TM doc I can type 'sqrt(2)' and press ↩. ↩ is bound
to a script which sends the task 'sqrt(2)' to a named pipe which is
linked to the input of the R process. Then this script waits for the
output of the R process until R returns '> '. After having the prompt
this script takes the delta of R's output file and inserts it as
snippet into the current TM doc.
gdb also has a prompt '(gdb) '. OK. But the tricky part with gdb would
be to get rid of, amongst others, prompted questions like:
The program being debugged has been started already.
Start it from the beginning? (y or n)
Here I do not know a way how to detect from a script that gdb is
expecting something from the user. Maybe a solution would be to use
the tm_interactive_input.dylib stuff. In R I got rid of it by
overwriting e.g. the readline function (i.e. by using DIALOG).
I tested that approach also with 'irb' and basically it works.
But I guess this could become a very stony way.
--Hans
More information about the textmate
mailing list