如何在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