【发布时间】:2010-08-15 15:48:57
【问题描述】:
我经常使用 PDB,如果我可以添加 systax 突出显示颜色似乎会更好。
理想情况下,我希望代码路径的颜色更浅。 实际代码行将突出显示语法。
我正在使用 OS X 和终端应用程序。 Python 2.7
【问题讨论】:
标签: python debugging terminal pdb
我经常使用 PDB,如果我可以添加 systax 突出显示颜色似乎会更好。
理想情况下,我希望代码路径的颜色更浅。 实际代码行将突出显示语法。
我正在使用 OS X 和终端应用程序。 Python 2.7
【问题讨论】:
标签: python debugging terminal pdb
看看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"}
【讨论】:
pdb 不支持着色。然而,即使你是一个命令行上瘾者(就像我一样;-),也并不难获得它——你不必为了在调试 Python 时获得着色而切换到 GUI/IDE。特别是,当您通过 SSH 访问远程计算机时,命令行工具通常会更好地工作,从而节省大量对 GUI 和 IDE 的远程访问可能给您带来的带宽和延迟问题;-)。
具体来说,对于您所询问的任务,请考虑ipdb(您还需要ipython,它提供了比ipdb 依赖的普通交互式Python 更高级的shell)。两者都为您提供了良好的选项卡补全、增强的回溯、和着色 -- ipython 用于您的正常交互工作,ipdb 在您调试时具有相同的功能(否则与 @ 几乎相同) 987654327@).
【讨论】:
$ python -m ipdb <mymodule> 也是如此,输出将突出显示语法。使用 Python3,因为这是十年后的事了。
你可以试试pudb,它在终端中工作,看起来像这样:
我没有尝试过其他答案中提到的一些选项,但从 PyPI 页面判断,pudb 维护得更好,文档也更好。
【讨论】:
如果有人在控制台中遇到着色问题。
我的控制台有白色背景,而 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 带有+ 符号的行
这对您来说可能是不可能的,但是您是否尝试过使用图形调试器(例如 eclipse/pydev 中的调试器)?它将为您提供语法突出显示等等。
如果我没有选项,我只会直接使用 pdb,因为图形界面要好得多。
【讨论】: