如何创建类的实例并将其分配给变量?

时间:2012-02-17 08:30:29

标签: gdb

使用gdb进行调试时的C ++代码: 1)如何在gdb中创建变量?使用gdb / mi命令? 2)如何在gdb中创建一个类的实例。 3)如何将创建的实例分配给gdb中创建的变量以供将来使用? 例如:

C++ code:
class C { public:int value; }

gdb commands (pseudo-code):
var v = new C()
print v.value

1 个答案:

答案 0 :(得分:1)

gdb目前不支持“new”。它根本不在解析器中处理。如果你想跟踪它的进度,那么在gdb bugzilla中有一个bug可以打开。有人(咳嗽)正在研究它。

同时,我想也许你可以手动完成。我从来没有试过这个真实的。这个想法是这样的:

set var $new = malloc(sizeof(struct Whatever))
call Whatever::Whatever($var)

但是,您可能需要在该调用中使用其他参数,因为C ++ ABI指定了一些神奇的隐藏参数。

另一种方法是在程序中创建一个调试便利函数:

whatever *new_w() { return new whatever(); }

然后你可以直接从gdb调用它。