我正在使用 CDT 进行 C++ 开发,它使用 gdb 进行调试。调试变量 View 仅显示变量的声明类型 - 而不是基于 vtable 信息的实际类型。由于我严重依赖动态子类化,声明的类型通常不包含我需要的信息。我还必须检查实际子类的值。我发现了这个问题:vtable in polymorphic class of C++ using gdb 据说 gdb 能够使用以下命令打印基于 vtable 信息的实际类型:
set print object on
但是如何在 Eclipse CDT 中执行此操作?
顺便说一句:这不是一个很常见的用例,所以默认情况下应该启用它吗?一旦有人使用继承和虚拟的东西,在调试过程中看到真实的对象类型就非常重要。仅显示已声明的类型对我来说就像来自石器时代。
最佳答案
自 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 可执行文件的路径。
关于c++ - Eclipse CDT 调试 : Show dynamic type,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13761152/