<exp+6> 在 gdb 中是什么意思?
What does <exp+6> mean in gdb?
我正在使用gdb调试C++代码。程序由于分段故障而停止。
Program received signal SIGSEGV, Segmentation fault.
所以我试图打印出变量的值,以确定错误的来源。我有一个名为"ring"的数组,类型为"Link**",其中Link是我定义的类。数组中的每个元素都指向一个"Link*"变量。这是打印"环形"数组的前三个元素时的输出。
(gdb) print ring[0]
$13 = (Link *) 0x8125290
(gdb) print ring[1]
$14 = (Link *) 0xb7e80b86 <exp+6>
(gdb) print ring[2]
$15 = (Link *) 0x8132e20
打印"ring[1]"时,为什么在内存地址后面出现"?这是什么意思?
编辑:我在Arch Linux(3.16.4-1-Arch)上使用gdb 7.8
表示指针值等于exp
符号的地址加6。这只是调试器试图提供帮助——每当它解码任何指针值时,它都会试图查看指针是否恰好位于目标代码中的任何已知符号附近,如果是,它会打印出这些信息
在检查函数代码的反汇编时,例如在分支目标中,您可能会看到这样的注释,但作为数据指针,这是非常不寻常的(函数指针往往直接指向函数符号,而不是偏移到它们中)。
几乎可以肯定的是,您有某种内存损坏错误,它只是碰巧产生该值作为副作用。
相关文章:
- 这个语法std::class<>{}(arg1, arg2) 在C++中是什么意思?
- 标准 N3337 5.2.10 第 7 条中的C++"类型"是什么意思?
- "类模板示例<int>;"语句对 C++11 是什么意思?
- 线应该是什么意思
- "CID"在AT+HTTPPARA= "CID" ,1中是什么意思
- 表达式"b=(b-x)&x"是什么意思?
- 这个表达是什么意思?
- 此代码验证公式是什么意思?
- 跟踪日志中的T.11803()是什么意思?
- 这个额外的关键字在这个 c++ 类声明中是什么意思?
- * 和 ** 在 C++ 函数声明中是什么意思?
- _T("xyz")是什么意思?
- #define Dbg(fmt,..) (0) 是什么意思? 警告:表达式无效
- 这行代码到底是什么意思?
- 在命名空间名称之前加上 :: 是什么意思?
- 从字符数组的元素中减去'a'是什么意思
- "friend"关键字在C++中是什么意思?
- 减法中的"0"是什么意思?
- 字符数组前面的加号是什么意思?
- 这里的字符串函数是什么意思