我正在处理相当复杂的项目,并且一次又一次地我必须通过查看堆栈跟踪来缩小问题范围。它们恰好很长,并且同时涉及“我的”代码、标准库代码和第 3 方库代码。大多数时候,真正的问题出在“我的”代码中,并且在堆栈跟踪中立即找到它对于眼睛来说有点困难。在“我的”代码下,我指的是当前工作目录下的代码。
所以我意识到我想要一些能够为堆栈跟踪着色并突出显示我的行的东西。比较original http://dl.dropbox.com/u/1729997/stack-trace/bw.png to 突出显示 http://dl.dropbox.com/u/1729997/stack-trace/hl.png.
我可以编写一个 python 脚本,我可以这样使用:
nosetests | colorize_stack_trace.py
但我相信有一种更快、更优雅的方法可以使用 Linux 工具集来做到这一点。有任何想法吗?
UPD:
使用 Dennis Williamson 建议的 supercat,中间结果如下 bash 函数:
pyst() {
rc=/tmp/spcrc;
echo '#################### ### # # # ########################################' > $rc;
echo ' blk 0 r ^(.*)$' >> $rc;
echo ' mag b 0 r ^\s*File "'`pwd`'/(.*)"' >> $rc;
spc -c $rc;
}
现在我可以做:
nosetests 2>&1 | pyst
不太优雅,但在某种程度上有效。还剩下两个问题:
- 在鼻子测试完成之前我看不到任何输出。 IE。我看不到进展。
- 我必须一遍又一遍地写2>&1。
UPD 2:
问这个问题我主要是nosetests
心里。我刚刚找到了很好的解决方案:rednose http://pypi.python.org/pypi/rednose/0.1.4鼻子插件。它突出显示本地路径,并做许多更方便的可读性事情。
回到原来的问题:我注意到 supercat 的问题并不完全与它相关,而是 Unix shell 流、刷新、管道、重定向的问题。作为问题的答案asked我接受建议超级猫的答案。
实际上,有一个很棒的 Python 语法高亮库,名为Pygments http://pygments.org/,它也能够突出显示回溯。
所以,你所要做的就是:
$ easy_install pygments # downloads and installs pygments
$ cat traceback.txt | pygmentize -l pytb
“pytb”是 PythonTracebackLexer 的快捷方式。还有一个用于 Python 3 Tracebacks 的特殊词法分析器,称为“py3tb”。
您可以将输出格式化为各种格式(包括 html、latex、svg、多种图像格式等)。但还有一个可用的终端格式化程序(如果您想知道......当然有不同的颜色主题可用!)。
您可以使用-f html
选择另一个格式化程序(在这种情况下为 HTML 格式化程序)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)