4

我正在使用 CDT 进行 C++ 开发,它使用 gdb 进行调试。调试变量视图仅显示变量的声明类型,而不是基于 vtable 信息的实际类型。由于我严重依赖动态子类化,因此声明的类型通常不包含我需要的信息。我还必须检查实际子类的值。我发现了这个问题:vtable in polymorphic class of C++ using gdb ,据说 gdb 能够使用以下命令根据 vtable 信息打印实际类型:

set print object on

但是如何在 Eclipse CDT 中做到这一点?

顺便说一句:这不是一个很常见的用例,因此默认情况下应该启用它吗?一旦有人使用继承和虚拟的东西,在调试过程中看到真实的对象类型是非常重要的。只显示声明的类型对我来说就像来自石器时代。

4

1 回答 1

2

这应该从CDT 8.1开始工作,这是Eclipse Juno发布时的 CDT 版本。它需要 GDB 7.5.1 或更高版本才能工作。

在具有最新 GDB 的 Linux 发行版上

我已经尝试在 Ubuntu 14.04 上使用 CDT 打包 Eclipse 的 Juno Release 和 Luna M6 Release 版本(随附 GDB-7.7,它可以直接开箱即用。

在 GDB 版本早于 7.5.1 的 Linux 发行版上

如果你的发行版不提供 GDB,幸运的是它很容易构建。您可以从http://www.gnu.org/software/gdb/download/下载源代码,只需按照 README 文件中的说明进行操作。为我构建花了不到 20 分钟。

完成后,您可以配置 Eclipse 以使用新的 GDB 版本,方法是:

窗口->首选项

从菜单栏中。

然后导航到 GDB 条目,如下所示,并将“GDB 调试器:”条目设置为新 GDB 可执行文件的路径。

在此处输入图像描述

于 2014-06-23T16:33:42.150 回答