【问题标题】:Can I get Python debugger pdb to output with Color?我可以让 Python 调试器 pdb 用 Color 输出吗?
【发布时间】:2010-08-15 15:48:57
【问题描述】:

我经常使用 PDB,如果我可以添加 systax 突出显示颜色似乎会更好。

理想情况下,我希望代码路径的颜色更浅。 实际代码行将突出显示语法。

我正在使用 OS X 和终端应用程序。 Python 2.7

【问题讨论】:

    标签: python debugging terminal pdb


    【解决方案1】:

    看看pdb++ - 它是 pdb 的直接替代品,可满足您的所有要求并添加一些其他不错的功能,例如制表符补全和新命令(例如 watch 和 sticky)。

    这是一个启用颜色的示例配置文件(在创建文件后添加:touch ~/.pdbrc.py):

    import pdb
    
    class Config(pdb.DefaultConfig):
        use_pygments = True
        pygments_formatter_class = "pygments.formatters.TerminalTrueColorFormatter"
        pygments_formatter_kwargs = {"style": "monokai"}
    

    【讨论】:

      【解决方案2】:

      pdb 不支持着色。然而,即使你是一个命令行上瘾者(就像我一样;-),也并不难获得它——你不必为了在调试 Python 时获得着色而切换到 GUI/IDE。特别是,当您通过 SSH 访问远程计算机时,命令行工具通常会更好地工作,从而节省大量对 GUI 和 IDE 的远程访问可能给您带来的带宽和延迟问题;-)。

      具体来说,对于您所询问的任务,请考虑ipdb(您还需要ipython,它提供了比ipdb 依赖的普通交互式Python 更高级的shell)。两者都为您提供了良好的选项卡补全、增强的回溯、着色 -- ipython 用于您的正常交互工作,ipdb 在您调试时具有相同的功能(否则与 @ 几乎相同) 987654327@).

      【讨论】:

      • $ python -m ipdb <mymodule> 也是如此,输出将突出显示语法。使用 Python3,因为这是十年后的事了。
      【解决方案3】:

      你可以试试pudb,它在终端中工作,看起来像这样:

      我没有尝试过其他答案中提到的一些选项,但从 PyPI 页面判断,pudb 维护得更好,文档也更好。

      【讨论】:

      • 当前版本有一些配色方案非常漂亮(不像上面显示的默认那样花哨)
      【解决方案4】:

      如果有人在控制台中遇到着色问题。

      我的控制台有白色背景,而 ipdb 也在语法中添加了相当浅的颜色(例如变量是白色的)。按 man ipython 显示我们有 3 种颜色可用:'nocolor'、'linux'、'LightBG'。在我的情况下,Ipdb 是通过 easy_install 安装到我的 virtualenv 中的。因此,查看 ipdb 源并对其进行修改是微不足道的(提示在您的环境中搜索 ipdb/init.py)。然后我修改了以下内容:

      def set_trace():
          ip = ipapi.get()
          + def_colors = ip.options.colors
          + def_colors = 'LightBG'
          Pdb(def_colors).set_trace(sys._getframe().f_back)
      

      这是一个有点骇人听闻的解决方案,但它很好地用于在我的工作站上进行调试,所以它足够了。但如果有人发现更好的东西。请给我发消息告诉我该怎么做。

      【讨论】:

      • 这行得通吗?我有IndentationError: unexpected indent 带有+ 符号的行
      • 该代码是伪代码。加号只是我在哪里放置新代码行的指示(类似于补丁的格式化方式)。放弃加号,应该可以工作,另一方面,现在是 2020 年,所以我完全停止使用它,现在它开箱即用。 :-)
      【解决方案5】:

      这对您来说可能是不可能的,但是您是否尝试过使用图形调试器(例如 eclipse/pydev 中的调试器)?它将为您提供语法突出显示等等。

      如果我没有选项,我只会直接使用 pdb,因为图形界面要好得多。

      【讨论】:

        猜你喜欢
        • 2015-12-30
        • 2022-11-21
        • 2012-08-18
        • 1970-01-01
        • 1970-01-01
        • 2018-03-05
        • 2011-08-19
        • 1970-01-01
        相关资源
        最近更新 更多