在gdb中,<value out>是什么意思?

(gdb) n 134 a = b = c = 0xdeadbeef + ((uint32_t)length) + initval; (gdb) n (gdb) pa $30 = <value optimized out> (gdb) pb $31 = <value optimized out> (gdb) pc $32 = 3735928563 

gdb如何优化我的价值?

这意味着你用例如gcc -O3编译,并且gcc优化器发现你的某些variables在某种程度上是冗余的,这使得它们可以被优化掉。 在这种特殊情况下,你似乎有三个variablesa,b,c具有相同的值,大概他们都可以被别名为一个variables。 编译禁用优化,例如gcc -O0 ,如果你想看到这样的variables(在任何情况下这通常是一个debugging版本的好主意)。

它没有。 你的编译器做了,但是原来的variables名仍然有一个debugging符号。

https://idlebox.net/2010/apidocs/gdb-7.0.zip/gdb_9.html

未保存在堆栈帧中的参数值显示为“优化值”。

我猜你用-O(somevalue)编译,正在访问variablesa,b,c在一个函数发生了优化。

只要运行“export COPTS =' – g -O0';” 并重build你的代码。 重build后,使用gdb进行debugging。 你不会看到这样的错误。 谢谢。