gpt4 book ai didi

scripting - 在 gdb 中访问帧信息

转载 作者:行者123 更新时间:2023-12-05 01:13:35 25 4
gpt4 key购买 nike

在 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 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 ?? ()

堆栈看起来总是相似的,函数executeZEND_something 交错了几次。我需要转到 execute 的最后一个实例(在本例中为 up 2)并 print myVar

显然 gdb 知道函数名称,但它是否在我可以访问的任何用户变量中显示它们?

键入 frame 2 显示单行版本,info frame 详细显示单个堆栈框架。我想做类似的事情while ($current_frame.function_name != "execute") {up;} print myVar 但我看不出如何在 gdb 中严格执行此操作。

是否有变量/结构/特殊内存位置/允许访问整个堆栈(如 bt)或当前堆栈帧(如 info frame)的 gdb 信息的东西)?

最佳答案

GBD 7.1 支持 accessing frame information来自 Python 的正是这种脚本。

关于scripting - 在 gdb 中访问帧信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2564658/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com