其他分享
首页 > 其他分享> > 如何在Eclipse CDT中为C STL对象启用gdb漂亮打印?

如何在Eclipse CDT中为C STL对象启用gdb漂亮打印?

作者:互联网

我正试图在eclipse cdt中为STL对象添加漂亮的打印.我试着按照这里描述的步骤:

http://sourceware.org/gdb/wiki/STLSupport

我检查了python文件夹,但我似乎无法完成这个…

我创建了一个gdbinit并为我的调试配置选择,但每当我尝试开始调试时,我都会收到以下错误:

Error while executing Python code.
!STACK 0
java.lang.Exception: /home/lizardking/workspace/eu.sofia.kpi.cpp.x86.testapp/.gdbinit:6: Error in sourced command file:
Error while executing Python code.
        at org.eclipse.cdt.dsf.mi.service.command.AbstractMIControl$RxThread.processMIOutput(AbstractMIControl.java:824)
        at org.eclipse.cdt.dsf.mi.service.command.AbstractMIControl$RxThread.run(AbstractMIControl.java:662)

如果我尝试在python shell中执行gdbinit的内容,我会收到此错误:

Python 2.6.6 (r266:84292, Sep 15 2010, 15:52:39) 
[GCC 4.4.5] on linux2
Type "help", "copyright", "credits" or "license" for more information.
import sys
sys.path.insert(0, '/home/Documents/python')
from libstdcxx.v6.printers import register_libstdcxx_printers
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named libstdcxx.v6.printers

似乎我没有这样的模块……我对Python没有任何线索所以我甚至不知道Python中的“模块”是什么….

有人可以帮我这个吗?能够看到真正的调试信息对我来说非常重要,或者对它来说非常重要.或者我甚至可以从控制台调试并从gdb获得不错的输出,因为如果我打印一个字符串,例如我得到无用的输出….

问候,
亚历克斯

解决方法:

这是适合我的解决方案.

下载(http://www.gnu.org/software/gdb/download/)并安装最新的gdb(即使用–prefix $HOME).它支持python脚本.

通过执行获取python漂亮的打印机

svn co svn://gcc.gnu.org/svn/gcc/trunk/libstdc++-v3/python

在您选择的目录中(即$(HOME)/ distribs / gdb_printers).您将在结帐目录中获得“python”子目录.

把它放在$(HOME)/ .gdbinit文件中,并带有漂亮打印机的正确路径:

python
import sys 
sys.path.insert(0, '/home/YOUR_NAME_HERE/distribs/gdb_printers/python')
from libstdcxx.v6.printers import register_libstdcxx_printers
register_libstdcxx_printers (None)
end

这使得可以通过gdb(>(gdb)p my_std_string)的命令行界面使用漂亮的打印.

接下来解释在Eclipse中调试时的用法.

下载(http://download.eclipse.org/eclipse/downloads/)最新的Stream Stable Build或Release of Eclipse(> = 3.7版).

下载(Eclipse Indigo的http://download.eclipse.org/tools/cdt/builds/8.0.0/index.html或Eclipse Juno的http://www.eclipse.org/cdt/downloads.php)最新的Eclipse C/C++开发工具(Eclipse CDT).

运行Eclipse并选择将存储选项的工作空间目录(即$HOME / projects).单击帮助 – >安装新软件…单击添加…->存档…并选择刚刚下载的CDT版本.然后,您必须选择要安装的组件:单击CDT主要功能 – > C/C++开发工具(可能还有您选择的其他组件).然后继续安装并重新启动Eclipse.

在Eclipse中指定gdb和.gdbinit的正确位置,并确保启用了Pretty Printing选项:

Window -> preferences -> C/C++ -> Debug -> GDB

现在,您可以在Eclipse中进行调试时看到在Variables视图中打印的STL容器.

其他命令可用于使gdb输出更加正常:

set print pretty on
set print object on
set print static-members on
set print vtbl on
set print demangle on
set demangle-style gnu-v3
set print sevenbit-strings off

更新:关于让它适用于旧项目,请参阅下面的rustx回答中的第4点).

UPDATE2:ubuntu 12.04有libstdc 6-4.6-dbg为你安装/usr/share/gcc-4.6/python/libstdcxx/ python模块

标签:c,gdb,eclipse,eclipse-cdt,gdb-python
来源: https://codeday.me/bug/20190917/1809764.html