我想从GDB进行printf样式打印。例如,我想打印一个变量值,但要用一些文本来描述它是什么。是否可以做到这一点,如果可以的话,你能否给予一个例子?
GDB
printf
ioekq8ef1#
您可以在gdb中使用printf,如下所示:
gdb
(gdb) printf "%s", x Hello world (gdb)
您也可以使用call来完成此操作
call
(gdb) call printf("%s", x) Hello world (gdb)
我更喜欢前者!http://beej.us/guide/bggdb/是gdb的一个简单而好的参考
k5ifujac2#
如果你有一个int i = 5;的定义,你可以用格式化打印的方式打印i的值:(gdb)printf“我的对象的瓦尔:%d\n”,i对象的值:5(GDB)
int i = 5;
i
lawou6xi3#
我想打印一个变量值,但要用一些[自定义]文本来描述它是什么。在格式字符串中使用printf和您的描述:
printf "my custom description for variable 1: %s\n", my_variable_1
示例:使用printf "My first environment variable is: %s", environ[0]访问environ array of environment variable strings,它在Linux上的所有C和C++程序中自动可用:
printf "My first environment variable is: %s", environ[0]
environ
(gdb) printf "My first environment variable is: %s\n", environ[0] My first environment variable is: SHELL=/bin/bash (gdb)
您可以打印多个变量和类型,包括GDB Convenience Variables,例如下面显示的$i索引变量。在这里,我使用了 * 两个 * 特殊格式字符,%i和%s:
$i
%i
%s
set $i = 0 printf "environ[%i]: %s\n", $i, environ[$i++] # now keep pressing Enter for an amazing repeat effect!
按Enter 3次后的命令和输出示例。现在,您可以看到给定的环境变量字符串存储在environ字符串数组的哪个索引中!例如:SHELL=/bin/bash存储在environ[0]中:
SHELL=/bin/bash
environ[0]
(gdb) set $i = 0 (gdb) printf "environ[%i]: %s\n", $i, environ[$i++] environ[0]: SHELL=/bin/bash (gdb) environ[1]: SESSION_MANAGER=local/gabriel:@/tmp/.ICE-unix/558952,unix/gabriel:/tmp/.ICE-unix/558952 (gdb) environ[2]: QT_ACCESSIBILITY=1 (gdb)
但是有文字来描述它是什么。对于任何想要一个非常好的变量描述的人来说,使用explore value,其中value是你的变量名。示例输出:
explore value
value
The value of 'value' is of type 'uint32_t' which is a typedef of type 'unsigned int' 'value' is a scalar value of type 'unsigned int'. value = 1234
在这里看到我的完整答案:gdb: show typeinfo of some data请参见1.我的答案要长得多,我使用了我刚刚学到的printf信息,上面:How to print the entire environ variable, containing strings of all of your C or C++ program's environment variables, in GDB
3条答案
按热度按时间ioekq8ef1#
您可以在
gdb
中使用printf
,如下所示:您也可以使用
call
来完成此操作我更喜欢前者!
http://beej.us/guide/bggdb/是
gdb
的一个简单而好的参考k5ifujac2#
如果你有一个
int i = 5;
的定义,你可以用格式化打印的方式打印i
的值:(gdb)printf“我的对象的瓦尔:%d\n”,i
对象的值:5
(GDB)
lawou6xi3#
如何在GDB中使用
printf
来为变量输出编写自定义描述我想打印一个变量值,但要用一些[自定义]文本来描述它是什么。
在格式字符串中使用
printf
和您的描述:示例:使用
printf "My first environment variable is: %s", environ[0]
访问environ
array of environment variable strings,它在Linux上的所有C和C++程序中自动可用:您可以打印多个变量和类型,包括GDB Convenience Variables,例如下面显示的
$i
索引变量。在这里,我使用了 * 两个 * 特殊格式字符,%i
和%s
:按Enter 3次后的命令和输出示例。现在,您可以看到给定的环境变量字符串存储在
environ
字符串数组的哪个索引中!例如:SHELL=/bin/bash
存储在environ[0]
中:如何获取大量详细信息。关于你的变量和它的类型
但是有文字来描述它是什么。
对于任何想要一个非常好的变量描述的人来说,使用
explore value
,其中value
是你的变量名。示例输出:
在这里看到我的完整答案:gdb: show typeinfo of some data
请参见
1.我的答案要长得多,我使用了我刚刚学到的
printf
信息,上面:How to print the entireenviron
variable, containing strings of all of your C or C++ program's environment variables, in GDB