This is the mail archive of the
gdb@sourceware.org
mailing list for the GDB project.
GDB frontends, MI-speak and object notation
- From: Dmitry Dzhus <dima at sphinx dot net dot ru>
- To: gdb at sources dot redhat dot com
- Date: Thu, 28 May 2009 15:53:05 +0400
- Subject: GDB frontends, MI-speak and object notation
Hi all.
This summer I'm working on improvement for GDB Emacs frontend using
GDB/MI as a part of Google Summer of Code, and I'm looking for advice.
I wonder how other front-end developers handle GDB/MI output messages.
In the code I'm working on, regular expressions are used to parse MI
messages and extract certain values from them. This is pretty
straightforward to write, but doesn't seem to fully use the
Âstructuredness of MI-speak, and lacks the spirit of MI. I'm reviewing
means of mapping MI (which seems to be a subset of JSON with a few
cosmetic differences and exceptions) to object-like structures so I can
work with it on a higher level. Has anyone had similar ideas?
I work with Lisp, so the mapping might be as follows:
threads=[{id="1", target-id="LWP18334", frame={level="0",
addr="0x08048b9a", func="mult_matrices_mt", args=[{name="m1",
value="0x804ba30"}, {name="m2", value="0x804ba30"}], file="test.c",
fullname="/home/sphinx/projects/gsoc/test.c", line="142"},
state="stopped"}], current-thread-id="1"
to
((threads . (((id . "1")
(target-id . "LWP18334")
(frame . ((level . "0")
(addr . "0x08048b9a")
(func . "mult_matrices_mt")
(args . (((name . "m1")
(value . "0x804ba30"))
((name . "m2")
(value . "0x804ba30"))))
(file . "test.c")
(fullname . "/home/sphinx/projects/gsoc/test.c")
(line . "142")))
(state . "stopped"))))
(current-thread-id . "1"))
--
Happy Hacking.
http://sphinx.net.ru
ã