Eo gdb: eo gdb script is now autoloaded by gdb, added eo_backtrace.
authorTom Hacohen <tom@stosb.com>
Tue, 16 Apr 2013 09:45:21 +0000 (10:45 +0100)
committerTom Hacohen <tom@stosb.com>
Tue, 16 Apr 2013 10:45:34 +0000 (11:45 +0100)
If you install the efl to a different path than the one gdb was installed to
either set gdb's data dir, or just symlink the file to the other prefix.
You can still use the old method of just loading the module.

data/Makefile.am
data/eo/eo_gdb.py [moved from data/eo/eo_step.py with 64% similarity]
data/eo/libeo-gdb.py.in [new file with mode: 0644]

index 2c10028..81c873c 100644 (file)
@@ -35,9 +35,18 @@ EXTRA_DIST += $(efreetfiles_DATA)
 
 ########################################################################
 # Eo
-eofilesdir = $(datadir)/eo
-eofiles_DATA = eo/eo_step.py
-EXTRA_DIST += $(eofiles_DATA)
+eogdbdir = $(datadir)/eo/gdb
+eogdb_SCRIPTS = eo/eo_gdb.py
+
+# Borrowed from gobject
+eo/libeo-gdb.py: eo/libeo-gdb.py.in
+       $(AM_V_GEN) $(SED) -e "s|\@datadir\@|$(datadir)|" $(srcdir)/eo/libeo-gdb.py.in > $(builddir)/eo/libeo-gdb.py
+
+install-data-hook: eo/libeo-gdb.py
+       $(MKDIR_P) $(datadir)/gdb/auto-load/$(libdir)
+       $(INSTALL) $(builddir)/eo/libeo-gdb.py $(datadir)/gdb/auto-load/$(libdir)/libeo.so.@VMAJ@.@VMIN@.@VMIC@-gdb.py
+
+EXTRA_DIST += $(gdbscripts_SCRIPTS) eo/libeo-gdb.py.in
 
 ########################################################################
 # Edje
similarity index 64%
rename from data/eo/eo_step.py
rename to data/eo/eo_gdb.py
index 54dd998..1fe8be6 100644 (file)
@@ -1,3 +1,7 @@
+# Implement eo_break that'll break on a macro/subid/whatever.
+
+import gdb
+
 class Eo_step(gdb.Command):
    def __init__(self):
       gdb.Command.__init__(self, "eo_step", gdb.COMMAND_OBSCURE)
@@ -15,3 +19,17 @@ class Eo_step(gdb.Command):
 
       print "Stopped at file " + gdb.selected_frame().find_sal().symtab.filename+ " line " + str(gdb.selected_frame().find_sal().line) + " function " + str(gdb.selected_frame().function())
 Eo_step()
+
+# Very crude, but works for the meanwhile
+class Eo_backtrace(gdb.Command):
+   def __init__(self):
+      gdb.Command.__init__(self, "eo_backtrace", gdb.COMMAND_OBSCURE)
+
+   def invoke (self, arg, from_tty):
+      btrace = gdb.execute("backtrace", False, to_string=True).split('\n')
+
+      for line in btrace:
+         if line.find("libeo.so") == -1 and line.find("src/lib/eo/") == -1:
+            print line
+
+Eo_backtrace()
diff --git a/data/eo/libeo-gdb.py.in b/data/eo/libeo-gdb.py.in
new file mode 100644 (file)
index 0000000..de1c3d0
--- /dev/null
@@ -0,0 +1,7 @@
+import sys
+
+eodir = '@datadir@/eo/gdb'
+if not eodir in sys.path:
+   sys.path.insert(0, eodir)
+
+import eo_gdb