C语言 广发行印刷

yrefmtwq  于 2023-10-16  发布在  其他
关注(0)|答案(3)|浏览(98)

我想从GDB进行printf样式打印。例如,我想打印一个变量值,但要用一些文本来描述它是什么。是否可以做到这一点,如果可以的话,你能否给予一个例子?

ioekq8ef

ioekq8ef1#

您可以在gdb中使用printf,如下所示:

(gdb) printf "%s", x
Hello world
(gdb)

您也可以使用call来完成此操作

(gdb) call printf("%s", x)
Hello world
(gdb)

我更喜欢前者!
http://beej.us/guide/bggdb/gdb的一个简单而好的参考

k5ifujac

k5ifujac2#

如果你有一个int i = 5;的定义,你可以用格式化打印的方式打印i的值:
(gdb)printf“我的对象的瓦尔:%d\n”,i
对象的值:5
(GDB)

lawou6xi

lawou6xi3#

如何在GDB中使用printf来为变量输出编写自定义描述

我想打印一个变量值,但要用一些[自定义]文本来描述它是什么。
在格式字符串中使用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++程序中自动可用:

(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

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]中:

(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是你的变量名。
示例输出:

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

相关问题