Я работаю над довольно сложным проектом, и время от времени мне приходится сузить проблемы, глядя на стеки. Они случаются очень долго и включают в себя «мой» код, стандартный библиотечный код и код сторонних библиотек одновременно. Большую часть времени реальная проблема заключается в «моем» коде и мгновенном обнаружении ее в трассировке стека, это немного сложно для глаз. Под «моим» кодом я подразумеваю код, который находится в текущем рабочем каталоге.Подсветка трассировки стека python
Итак, я понял, что хочу что-то, что будет раскрашивать трассировки стека и выделить линии, которые являются моими. Сравнить original до highlighted.
Я мог бы написать сценарий питона, который я мог бы использовать этот путь:
nosetests | colorize_stack_trace.py
Но я считаю, что есть более быстрый и элегантный способ сделать это, используя Linux набор инструментов. Есть идеи?
UPD:
Используя SUPERCAT предложенного Dennis Williamson, промежуточный результат следующих функций Баша:
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
не слишком элегантным, но работает в некоторой степени. Осталось две проблемы:
- Я не вижу никакого выхода до завершения носеттов. То есть Я не вижу прогресса.
- Мне нужно написать 2> & 1 снова и снова.
UPD 2:
Задавая этот вопрос, я имел в основном nosetests
в виду. И я просто нашел отличное решение: rednose плагин для носа. Он выделяет пути, которые являются локальными, и делает еще много удобных возможностей для чтения.
Возврат к исходному вопросу: проблемы, которые я отметил с помощью supercat, не относятся к нему полностью, но его проблема в потоковой передаче, промывке, пересылке, перенаправлении Unix. Так как ответ на вопрос спросил Я принимаю ответ, который предлагает supercat.
RedNose приятно. Вы можете включить его по умолчанию, добавив 'rednose = 1' в ваш' .noserc' –