Выделение трассировок стека PythonPython

Программы на Python
Ответить
Anonymous
 Выделение трассировок стека Python

Сообщение Anonymous »

Я работаю над довольно сложным проектом, и время от времени мне приходится сужать круг проблем, просматривая трассировки стека. Они очень длинные и включают в себя одновременно «мой» код, код стандартной библиотеки и код сторонних библиотек. Большую часть времени настоящая проблема заключается в «моем» коде, и мгновенно обнаружить его в трассировке стека немного сложно для глаз. Под «моим» кодом я подразумеваю код, который находится в текущем рабочем каталоге.

Итак, я понял, что мне нужно что-то, что будет раскрашивать трассировки стека и выделять мои строки. Сравните исходное и выделенное.

Я мог бы написать скрипт на Python, который можно было бы использовать следующим образом:

Код: Выделить всё

nosetests | colorize_stack_trace.py
Но я считаю, что есть более быстрый и элегантный способ сделать это с помощью набора инструментов Linux. Есть идеи?

UPD:

Используя 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
Не слишком элегантно, но в какой-то степени работает. Остались две проблемы:
  • Я не вижу никаких результатов до завершения носового тестирования. Т.е. Я не вижу прогресса.
  • Мне приходится писать 2>&1 снова и снова.
UPD 2:

Задавая этот вопрос, я имел в виду в основном носовые тесты. И я только что нашел отличное решение: плагин Rednose Nose. Он выделяет локальные пути и делает много других удобных для чтения вещей.

Возвращаясь к исходному вопросу: проблемы, которые я заметил с supercat, не относятся к нему полностью, но это проблема потоковой передачи, очистки, конвейеризации и перенаправления оболочки Unix. Итак, в качестве ответа на заданный вопрос я принимаю ответ, в котором предлагается суперкат.
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»