Доступ к информации о кадре в GDB - PullRequest
3 голосов
/ 02 апреля 2010

В gdb есть ли способ получить доступ к содержимому info frame в скрипте?

Я отлаживаю проблему где-то между Apache, PHP, APC и моим собственным кодом, и у меня есть около ста ядер на выбор. Следуя инструкциям здесь http://bugs.php.net/bugs-generating-backtrace.php Я получаю стека трассировки, как:

 #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 <b>execute</b> (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 <b>execute</b> (op_array=0xb79d55ec) at /usr/src/debug/php-5.2.7/Zend/zend_vm_execute.h:92
...
 #26 0x09caa894 in ?? ()
 #27 0x00000000 in ?? ()

Стек всегда будет выглядеть одинаково, функции execute и ZEND_something чередуются несколько раз. Мне нужно перейти к последнему экземпляру execute (up 2 в данном случае) и print myVar.

Очевидно, что GDB знает имена функций, но отображает ли он их в любых пользовательских переменных, к которым я мог получить доступ?

Ввод frame 2 показывает однострочную версию, а info frame подробно показывает один стековый кадр. Я хочу сделать что-то вроде while ($current_frame.function_name != "execute") {up;} print myVar но я не вижу, как это сделать строго в GDB.

Существует ли переменная / структура / специальная ячейка памяти / что-то, что позволяет получить доступ к информации GDB во всем стеке (например, bt) или в текущем кадре стека (например, info frame)?

1 Ответ

0 голосов
/ 05 апреля 2010

GBD 7.1 поддерживает доступ к информации фрейма из Python именно для этого вида сценариев.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...