【发布时间】:2019-08-29 09:27:39
【问题描述】:
在 GDB 中,希望在遇到断点时打印数组中所有指针的值。可能存在值为0x0的数组元素。
例如:
arr[] = {0x0, 0x5cb04, 0x5510, 0x0, 0x5c84}
(gdb) info b
Num Type Disp Enb Address What
1 breakpoint keep y 0x1234 in fun1 at file1.c:200
p arr
p *arr[0]
p *arr[1]
p *arr[2]
p *arr[3]
c
但是 GDB 无法打印 *arr[1], *arr[2], *arr[3], coz 的值
*arr[0] 遇到错误
“无法访问地址 0x0 的内存”。
这个问题有什么解决方案或变通方法吗?
【问题讨论】:
-
您想打印
arr[0]以获取元素值而不是*arr[0]取消引用元素值,对吧? -
我想取消引用元素值。是否有一个 if 条件可以在这里提供帮助?
-
我有一个指针数组,在这种情况下,arr[0] 会给我 0x0,arr[1] 会给我 0x5cb04。我想在 0x5cb04 打印值,所以我在做 *arr[1]
-
你的意思是
p (arr[0]) ? *arr[0] : "null"? -
@SanderDeDycker 感谢它有效。将此作为答案发布。