【问题标题】:How to use gdb command list to print a function's parameter and return value without pausing?如何使用 gdb 命令列表打印函数的参数和返回值而不暂停?
【发布时间】:2010-08-17 17:06:58
【问题描述】:

我想查看函数的参数和返回值。我使用 gdb 断点命令列表(gdb 命令脚本)如下:

int foo(int)

(gdb) break foo
(gdb) print $r0
(gdb) finish
(gdb) print $r0
(gdb) continue
(gdb) end

但它只打印参数。

我从这里得到了原因GDB Breakpoint command lists

命令列表中的任何其他命令,在命令恢复执行后,都会被忽略。

感谢任何帮助。

【问题讨论】:

    标签: gdb


    【解决方案1】:

    如果要在函数末尾关联命令,则需要在函数末尾设置第二个断点。

    【讨论】:

    • 我没有'foo()'的源代码。如何找到函数 foo() 主体的结尾?
    • 当你在 foo() 内的断点处停止时, disassemble 命令应该反汇编整个函数,然后在break *0xaddress 显示的最后一个地址处设置断点。应该是 retq 或类似的东西,具体取决于您的架构。显示的返回点可能不止一个。你应该在所有的地方都设置一个断点。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-05-01
    • 2013-10-10
    • 2019-12-06
    • 1970-01-01
    • 1970-01-01
    • 2020-08-30
    • 2015-11-25
    相关资源
    最近更新 更多