在 GDB 中打印多个变量?

Posted

技术标签:

【中文标题】在 GDB 中打印多个变量?【英文标题】:Printing multiple variables in GDB? 【发布时间】:2013-07-05 03:34:50 【问题描述】:

我在 GDB Prompt 的函数中打印多个变量 (say 25) 时遇到问题。

有什么方便的方法来代替手动打印每个变量?

我可以有一个脚本或更简单的方法来完成我的工作吗?

【问题讨论】:

gdb - print multiple variables with one command的可能重复 【参考方案1】:

您可以在 gdb 中使用printf 命令打印多个值。

printf "%d,%d\n", a, b

要在将来使用它,您可以定义一个 gdb-function 或使用 gdb-history 功能。

    要定义 gdb 函数,请使用以下内容创建/修改文件 $HOME/.gdbinit

    define print_all
        printf "%d,%d\n", a, b
    end
    document print_all
        Prints all my variables.
    end
    

    然后你可以使用print_all作为命令。

    对于历史技巧,创建/修改文件$HOME/.gdbinit,内容如下:

    set history filename ~/.gdb_history
    set history save
    

    并使用ctrl+r 获取它,就像在 bash 中一样。 实际的 gdb-history 答案是 here。

【讨论】:

@Jeyaram,我没有使用不同的 linux 发行版的经验,但是如果不是从 $HOME/.gdbinit 中选择的,您可以使用 -x 选项来指定命令文件。例如:gdb -x /path/.gdbinit /path/binary 似乎无法打印寄存器。

以上是关于在 GDB 中打印多个变量?的主要内容,如果未能解决你的问题,请参考以下文章

如何 gdb 如何打印一个地址中的内容

VIM 花招:格式化 gdb 打印的长变量输出

尝试在程序集程序中打印变量时,GDB显示错误消息

打印C中所有全局和静态变量的值?

每次进入gdb时都打印出局部变量

可读格式的 GDB 打印变量(使用 << 运算符)