Accessing frame info in gdb

Posted by Maelstrom on Stack Overflow See other posts from Stack Overflow or by Maelstrom
Published on 2010-04-02T01:50:31Z Indexed on 2010/04/02 1:53 UTC
Read the original article Hit count: 448

Filed under:
|

In gdb, is there a way to access the contents of info frame in a script?

I'm debugging a problem somewhere between Apache, PHP, APC and my own code, and I have about a hundred cores to choose from. Following the instructions here http://bugs.php.net/bugs-generating-backtrace.php I end up with a stacktrace like:

 #0  0x0121a31a in do_bind_function (opline=0xa94dd750, function_table=0x9b9cf98, compile_time=0 '\0') at /usr/src/debug/php-5.2.7/Zend/zend_compile.c:2407
 #1  0x0124bb2e in ZEND_DECLARE_FUNCTION_SPEC_HANDLER (execute_data=0xbfef7990) at /usr/src/debug/php-5.2.7/Zend/zend_vm_execute.h:498
 #2  0x01249dfa in execute (op_array=0xb79d5d3c) at /usr/src/debug/php-5.2.7/Zend/zend_vm_execute.h:92
 #3  0x01261e31 in ZEND_INCLUDE_OR_EVAL_SPEC_VAR_HANDLER (execute_data=0xbfef80d0) at /usr/src/debug/php-5.2.7/Zend/zend_vm_execute.h:7809
 #4  0x01249dfa in execute (op_array=0xb79d55ec) at /usr/src/debug/php-5.2.7/Zend/zend_vm_execute.h:92
...
 #26 0x09caa894 in ?? ()
 #27 0x00000000 in ?? ()

The stack will always look similar, with function execute and ZEND_something interleaved several times. I need to go up to the last instance of execute (up 2 in this case) and print myVar.

Obviously gdb knows the function names, but does it surface them in any user variables I could access?

Typing frame 2 shows a one-line version, and info frame shows a single stackframe in detail. I want to do something like while ($current_frame.function_name != "execute") {up;} print myVar but I don't see how to do it strictly within gdb.

Is there a variable / structure / special memory location / something that allows access to gdb's information on either the whole stack (like bt) or to the current stack frame (like info frame)?

© Stack Overflow or respective owner

Related posts about gdb

Related posts about scripting