C语言 广发行印刷

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

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

ioekq8ef

ioekq8ef1#

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

  1. (gdb) printf "%s", x
  2. Hello world
  3. (gdb)

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

  1. (gdb) call printf("%s", x)
  2. Hello world
  3. (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和您的描述:

  1. 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++程序中自动可用:

  1. (gdb) printf "My first environment variable is: %s\n", environ[0]
  2. My first environment variable is: SHELL=/bin/bash
  3. (gdb)

您可以打印多个变量和类型,包括GDB Convenience Variables,例如下面显示的$i索引变量。在这里,我使用了 * 两个 * 特殊格式字符,%i%s

  1. set $i = 0
  2. printf "environ[%i]: %s\n", $i, environ[$i++]
  3. # now keep pressing Enter for an amazing repeat effect!

按Enter 3次后的命令和输出示例。现在,您可以看到给定的环境变量字符串存储在environ字符串数组的哪个索引中!例如:SHELL=/bin/bash存储在environ[0]中:

  1. (gdb) set $i = 0
  2. (gdb) printf "environ[%i]: %s\n", $i, environ[$i++]
  3. environ[0]: SHELL=/bin/bash
  4. (gdb)
  5. environ[1]: SESSION_MANAGER=local/gabriel:@/tmp/.ICE-unix/558952,unix/gabriel:/tmp/.ICE-unix/558952
  6. (gdb)
  7. environ[2]: QT_ACCESSIBILITY=1
  8. (gdb)

如何获取大量详细信息。关于你的变量和它的类型

但是有文字来描述它是什么。
对于任何想要一个非常好的变量描述的人来说,使用explore value,其中value是你的变量名。
示例输出:

  1. The value of 'value' is of type 'uint32_t' which is a typedef of type 'unsigned int'
  2. 'value' is a scalar value of type 'unsigned int'.
  3. 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

展开查看全部

相关问题