c++ - Eclipse CDT 调试 : Show dynamic type

标签 c++ debugging gdb eclipse-cdt

我正在使用 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 可执行文件的路径。

enter image description here

关于c++ - Eclipse CDT 调试 : Show dynamic type,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13761152/

相关文章:

c++ - 如何在 C++ Linux 中获得 3g 调制解调器信号强度?

c++ - BM_GETCHECK 不工作

c++ - 使用 C++ "for"命令计算指数的创建程序

c++ - 将主应用程序对象包含在 try-catch block 中会捕获所有崩溃吗?

python - Fedora 19 Pyclewn 找不到GDB版本

c++ - 如何在 Visual Studio 2010 中使用 C++(使用非托管代码)创建分步向导

c# - Visual Studio 2012 调试多个项目

php - jQuery 昨天工作了。不再

gcc - gdb:打印 AArch64 高级 SIMD 矢量寄存器(有可能吗?)

c - 如何防止 gdb 在下一个命令后停止