如何告诉gdb'优化输出值'的值或使其推断出值?

时间:2018-03-02 07:21:26

标签: gdb

有一个C ++ this指针是一个<optimized out>值,但在调用堆栈中可以找到它的值。

如何告诉gdb this具有该特定值? gdb可以查看堆栈并推断它吗?

1 个答案:

答案 0 :(得分:2)

在gdb中无法做到这一点,至少不能让print this知道要检查哪个帧来查找值。

一个简单的解决方法是使用便利变量。例如:

(gdb) up 5
(gdb) set $mythis = this
(gdb) down 5
(gdb) print *$mythis

另一种方法是编写一个&#34;便利功能&#34; (这是gdb手册中使用的术语)自动执行此操作。便利函数是用Python编写的,可以做很多事情,比如在其他堆栈帧中查找符号。因此,例如,您可以编写$_this函数并将其用作:

(gdb) print *$_this()

......不完全相同,但也许它符合您的需求。