c++ - 如何取消引用和打印指针数组的每个元素?

标签 c++ gdb

假设我有一个指针数组:

struct S {int x;};
S *arr[3] = {new S{1}, new S{2}, new S{3}};

我想使 gdb 取消引用并打印数组的每个元素。

打印一个元素很简单:

(gdb) p *arr[0]                                                                                            
$1 = {x = 1}

但我想以这种方式打印数组中的每个元素。

我尝试了 p arr,但它输出的是指针,而不是它们指向的对象:

(gdb) p arr
$1 = {0x613c20, 0x613c40, 0x613c60}

最佳答案

我还没有找到比这更好的:

(gdb) set $i=0
(gdb) p *arr[$i++]
$102 = {x = 1}
(gdb) 
$103 = {x = 2}
(gdb) 
$104 = {x = 3}
(gdb)

也许它能帮上忙。

注意:只需按return 即可显示下一个值。

关于c++ - 如何取消引用和打印指针数组的每个元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58464405/

相关文章:

iphone - 如何调试仅在 iPhone 应用程序的发布目标上发生的 EXC_BAD_ACCESS?

c++ - 在启动过程中程序正常退出。 gdb不会在断点处中断

c - 如何检查字符串是否没有任何字母数字字符?

GDB自杀(突然杀死调试进程)

c++ - 有符号和无符号整数 C++ 实现的区别

c++ - 使用SFINAE分辨率区分普通模板参数和模板模板参数的技术

c++ - 预编译的 Clang 看不到 Visual Studio header

安卓 : Help in compiling SoundTouch lib in android

c++ - vector 名称如何被视为数组名称?

c++ - Gcc 4.8 DWARF4 与 DWARF2