当前位置: 首页 > 面试题库 >

GDB漂亮打印ImportError:没有名为“ printers”的模块

曹鸿风
2023-03-14
问题内容

我正在尝试在Ubuntu
14.04的GDB中为STL添加漂亮的打印。工具的一些细节:

操作系统:Ubuntu 14.04

gdb版本:7.7

python版本:2.7.6

python3版本:3.4.0

但是在我完全按照说明进行设置后。我仍然收到以下错误:

Traceback (most recent call last):
  File "<string>", line 3, in <module>
  File "/home/jerry/myLib/gdb_stl_support/python/libstdcxx/v6/__init__.py", line 19, in <module>
    from printers import register_libstdcxx_printers
ImportError: No module named 'printers'
/home/jerry/.gdbinit:6: Error in sourced command file:
Error while executing Python code.
Reading symbols from main...done.

然后,我仔细检查了我漂亮的打印安装目录。在该目录下/home/jerry/myLib/gdb_stl_support/python/libstdcxx/v6/,我可以清楚地看到我有printers.py文件。而且我还查看了printers.py的内容,我确定它也具有register_libstdcxx_printers该类。为什么python解释器仍然抱怨printers模块丢失?这对我来说真的很奇怪。


问题答案:

我只是自己尝试了一些东西,幸运的是,现在它可以工作了。至少它可以按预期打印出地图和矢量内容。这是我所做的:

由于抱怨它找不到printer.py模块,所以我认为应该告诉python解释器此文件所在的位置。所以我首先在我的〜/ .gdbinit中添加了这一行:
sys.path.append("/home/jerry/myLib/gdb_stl_support/python/libstdcxx/v6")

(行后sys.path.insert(0, '/home/jerry/myLib/gdb_stl_support/python')

然后再次运行gdb,出现以下错误:

Traceback (most recent call last):
  File "<string>", line 5, in <module>
  File "/home/jerry/myLib/gdb_stl_support/python/libstdcxx/v6/printers.py", line 1247, in register_libstdcxx_printers
    gdb.printing.register_pretty_printer(obj, libstdcxx_printer)
  File "/usr/share/gdb/python/gdb/printing.py", line 146, in register_pretty_printer
    printer.name)
RuntimeError: pretty-printer already registered: libstdc++-v6
/home/jerry/.gdbinit:7: Error in sourced command file:
Error while executing Python code.

给定错误信息,我编辑了〜/ .gdbinit文件并注释了这一行register_libstdcxx_printers (None)

然后在运行gdb之后,它就可以工作了。

但是我仍然想知道是否以递归方式搜索sys.path中的目录?我的意思是,python解释器应按以下方式工作:在中添加一个目录后sys.path,该目录下的子目录也将在其中搜索模块文件。



 类似资料:
  • 问题内容: 我正在寻找有关创建自定义打印机的可靠教程。 GDB页面上有一些稀疏的页面,但是它们还远远不够完整,让人难以想象! 例如,我很希望能够为我们的自定义共享指针类创建一个PrettyPrinter。 问题答案: 查看Tom Tromey的漂亮印刷教程第1部分和第2部分。还有一个libstdc ++-v6漂亮的打印机实现 可供查看,这是我刚开始时将自己用作模板的过程。一个有点简单的例子(在本文

  • 问题内容: 如果有人对JSON的打印非常了解,那么我将不胜感激! 我正在使用以下功能将JSON字符串移动到文件中,以将复杂的python字符串转换为JSON格式: 问题是我遇到了方括号的语法错误,因为这对我来说是个新话题,我不知道该如何解决。我需要的JSON格式如下: 我正在使用Google Visualization API,您可能对此比较熟悉,但是我需要动态图。上面的代码是API创建图形所需的

  • 问题内容: 我正在创建一个JSON文件的脚本。现在,我只是使用(PHP 5.2.x)将数组编码为JSON输出。然后,我将返回值打印到文件中并保存。问题是客户端希望能够打开这些JSON文件以提高可读性,因此我想在其中添加换行符并“漂亮打印” JSON输出。有关如何执行此操作的任何想法?我唯一可以看到的替代方法是完全不使用,而只是手动写入文件内容,并为每行添加自己的换行符。 这是我得到的: 这就是我想

  • 下面是我的例子: 如何为JSONARRAY启用漂亮的打印? 我认为这足以解释我的问题,但是这里有一些bla bla bla bla bla bla因为stackoverflow问我更多的细节,让我发布问题。

  • 问题内容: 我已经使用命令安装了redis,但是当我运行Python程序时收到此错误: 知道发生了什么问题还是我也应该安装其他软件包?我正在使用Ubuntu 13.04,并且具有Python 2.7。 问题答案: 要安装redis-py,只需: 或者(您确实应该使用点子): 或从来源: 入门 详细信息:https : //pypi.python.org/pypi/redis

  • 问题内容: 由于某种原因,我不能使用or模块。在python shell中运行以下命令后 要么 我得到这个错误 ModuleNotFoundError:没有名为“ Tkinter”的模块 要么 ModuleNotFoundError:没有名为“ tkinter”的模块 可能是什么原因,我们如何解决呢? 问题答案: 您可能需要使用以下一种(或类似的方式)安装它: 您也可以针对python 3.7提及

  • 问题内容: 我在 Google App Engine的Python 使用Google Translate API时遇到此错误,但是我不知道如何解决, 我将尝试 设置指示Google App Engine SDK的环境 ,然后再次上传到Google Apps Engine, 始终会收到错误消息 , 错误:服务器错误 服务器遇到错误,无法完成您的请求。如果问题仍然存在,请报告您的问题并提及此错误消息以

  • 问题内容: 我指的是以下教程来为我的Web应用程序创建登录页面。 http://code.tutsplus.com/tutorials/intro-to-flask-signing-in-and-out--net-29982 我的数据库有问题。我正在 当我执行 我已经尝试了所有可能的方法来安装python mysql,这是本教程中提到的一种,easy_install,sudo apt-get in