Python scripting in gdb 7.0 kicks total ass. Today I played around with one cool usecase for it: Remote debugging.
I don’t know how many times I have tried to help someone debug over irc, with the person cutting and pasteing gdb commands and results into xchat. Well, no more! Today I hacked up a gdb python script and an xchat python script that lets you export a gdb session over irc:
From gdb:
(gdb) source gdb-server.py gdb irc server, Waiting for connection on /tmp/gdb-socket-500
In xchat:
> /load ~/xchat-gdb.py Loaded xchat-gdb > /join #test > /gdb connect connecting to gdb... connected!
Loggin in as another user on irc:
> /join #test > alex: gdb print "yey" <alex> $6 = "yey" > alex: gdb bt 2 <alex> #0 0x00000035010d50d3 in *__GI___poll (fds=<value optimized out>, nfds=<value optimized out>, timeout=-1) at .. +/sysdeps/unix/sysv/linux/poll.c:87 <alex> #1 0x00007ffff52f96cc in g_main_context_poll (n_fds=<value optimized out>, fds=<value optimized out>, +priority=<value optimized out>, timeout=<value optimized out>, context=<value optimized out>) at gmain.c:2904
Obviously this is kinda unsafe as you can do all sorts of things via gdb. It needs to be able to limit who can control your gdb instance, and you should only give such permissions to people you trust.
Git repo here, have fun with it.
Yay, most useful hack of the week!
Also, get a freedesktop account and store your repos there please. Freedesktop has cgit.
This could also be implementing using telepathy-python. For some awesome peer-to-peer debugging.
gdb shell cat /etc/passwd
website: Thats relatively benign, why not “rm -rf ~/”?
As I said, there are clear security issues with this.
Excellent.
Oh that is too cool!
Why don’t people just use one of the free pastebins? That’s how I’ve _always_ done my questions/support in irc.
@datakid, that’s what all the people use but it doesn’t allow to send commands directly to the DGB of the person you are trying to help which is why his solution is so nice.
In fact, it might be a cool idea if xchat-gdb auto-used a pastebin for replies longer than say two lines.