GDB frontends, MI-speak and object notation

Dmitry Dzhus dima@sphinx.net.ru
Thu May 28 12:00:00 GMT 2009


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
ã‚€



More information about the Gdb mailing list