Учебники

Отладка потоковых приложений

В этой главе мы узнаем, как отлаживать потоковые приложения. Мы также узнаем важность отладки.

Что такое отладка?

В компьютерном программировании отладка — это процесс поиска и устранения ошибок, ошибок и отклонений от компьютерной программы. Этот процесс начинается, как только код написан, и продолжается последовательно, так как код объединяется с другими единицами программирования, образуя программный продукт. Отладка является частью процесса тестирования программного обеспечения и является неотъемлемой частью всего жизненного цикла разработки программного обеспечения.

Python Debugger

Отладчик Python или pdb является частью стандартной библиотеки Python. Это хороший запасной инструмент для отслеживания трудно обнаруживаемых ошибок, позволяющий быстро и надежно исправить неисправный код. Ниже приведены две наиболее важные задачи отладчика pdp:

  • Это позволяет нам проверять значения переменных во время выполнения.
  • Мы можем пройти по коду и установить точки останова также.

Мы можем работать с pdb следующими двумя способами:

  • Через командную строку; это также называется посмертной отладкой.
  • Путем интерактивного запуска pdb.

Работа с pdb

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

import pdb;
pdb.set_trace()

Рассмотрим следующие команды для работы с pdb через командную строку.

  • ч (помощь)
  • д (вниз)
  • и (вверх)
  • б (перерыв)
  • сл (прозрачный)
  • л (список))
  • п (следующий))
  • с (продолжение)
  • с (шаг)
  • г (возврат))
  • б (перерыв)

Ниже приведена демонстрация команды h (help) отладчика Python:

import pdb

pdb.set_trace()
--Call--
>d:\programdata\lib\site-packages\ipython\core\displayhook.py(247)__call__()
-> def __call__(self, result = None):
(Pdb) h

Documented commands (type help <topic>):
========================================
EOF   c         d       h        list     q       rv      undisplay
a     cl        debug   help     ll       quit    s       unt
alias clear     disable ignore   longlist r       source  until
args  commands  display interact n        restart step    up
b     condition down    j        next     return  tbreak  w
break cont      enable  jump     p        retval  u       whatis
bt    continue  exit    l        pp       run     unalias where

Miscellaneous help topics:
==========================
exec pdb

пример

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

import pdb;
pdb.set_trace()

После установки точки останова мы можем запустить скрипт в обычном режиме. Скрипт будет выполняться до определенного момента; до тех пор, пока не была установлена ​​линия. Рассмотрим следующий пример, где мы будем запускать скрипт, используя вышеупомянутые строки в разных местах скрипта:

import pdb;
a = "aaa"
pdb.set_trace()
b = "bbb"
c = "ccc"
final = a + b + c
print (final)

Когда приведенный выше скрипт выполняется, он будет выполнять программу до a = «aaa», мы можем проверить это в следующем выводе.

Выход

--Return--
> <ipython-input-7-8a7d1b5cc854>(3)<module>()->None
-> pdb.set_trace()
(Pdb) p a
'aaa'
(Pdb) p b
*** NameError: name 'b' is not defined
(Pdb) p c
*** NameError: name 'c' is not defined

После использования команды p (print) в pdb этот скрипт печатает только aaa. Это сопровождается ошибкой, потому что мы установили точку останова до a = «aaa».

Точно так же мы можем запустить скрипт, изменив точки останова и увидев разницу в выходных данных —

import pdb
a = "aaa"
b = "bbb"
c = "ccc"
pdb.set_trace()
final = a + b + c
print (final)

Выход

--Return--
> <ipython-input-9-a59ef5caf723>(5)<module>()->None
-> pdb.set_trace()
(Pdb) p a
'aaa'
(Pdb) p b
'bbb'
(Pdb) p c
'ccc'
(Pdb) p final
*** NameError: name 'final' is not defined
(Pdb) exit

В следующем скрипте мы устанавливаем точку останова в последней строке программы —

import pdb
a = "aaa"
b = "bbb"
c = "ccc"
final = a + b + c
pdb.set_trace()
print (final)

Выход выглядит следующим образом —