c – Eclipse CDT调试:显示动态类型

我正在使用CDT进行C开发,它使用gdb进行调试.调试变量视图仅显示变量的声明类型 – 而不是基于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上使用Juno Release和Luna M6 Release版本的CDT打包Eclipse(随GDB-7.7一起提供,它可以直接开箱即用.

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

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

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

窗口 – > Preferecnes

从菜单栏.

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

点赞