有一个C ++ this
指针是一个<optimized out>
值,但在调用堆栈中可以找到它的值。
如何告诉gdb this
具有该特定值? gdb可以查看堆栈并推断它吗?
答案 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()
......不完全相同,但也许它符合您的需求。