efl/data/eo
Tom Hacohen 79d76fb25e Eo gdb: add a way to resolve Eo ids from GDB without a running process
Normally when debugging Eo with gdb you can just use any of the internal
eo functions to resolve the id to its internal pointer. However, when
loading a coredump you can't execute any code, not even the id resolve
code.

This change adds a gdb function that resolves the id to its pointer form
without executing any code in the process space. This plugin is
essentially the id resolve code written in python as a gdb function.

Usage:
 Print the pointer:
 (gdb) print $eo_resolve(obj)
 $1 = (_Eo_Object *) 0x5555559bbe70

 Use it directly (e.g. to print the class name):
 (gdb) $eo_resolve(obj)->klass->desc.name

This plugin requires that the coredump would be loaded with the exact
same libeo.so binary (or at least one that hasn't changed eo internals),
and that the debug symbols for libeo.so would be available for gdb to
use.

Note:
This feature is incomplete and only resolves IDs that are owned by the
main thread and in the main domain. This is not a big issue at the
moment, because almost all of our IDs are like that.

@feature
2016-11-18 11:48:07 +00:00
..
.gitignore gitignore: do not track generated files. 2013-09-26 15:51:25 +09:00
eo-mode.el eo-mode.el: add @nonull and void_ptr. 2016-07-29 20:27:43 -03:00
eo_gdb.py Eo gdb: add a way to resolve Eo ids from GDB without a running process 2016-11-18 11:48:07 +00:00
libeo-gdb.py.in Eo gdb: eo gdb script is now autoloaded by gdb, added eo_backtrace. 2013-04-16 11:45:34 +01:00