2008-10-08 2 views
5

Поскольку Python - это динамический, интерпретируемый язык, вам не нужно компилировать свой код перед его запуском. Следовательно, очень просто написать свой код, запустить его, посмотреть, какие проблемы возникают, и исправить их. Использование горячих клавиш или макросов может сделать это невероятно быстрым.Когда использовать отладчик Python

Итак, поскольку так легко сразу увидеть выход вашей программы и любые ошибки, которые могут возникнуть, я еще не использовал инструмент отладчика. В каких ситуациях может потребоваться использование реального отладчика в сравнении с используемым мной методом?

Я хотел бы знать, прежде чем попасть в ситуацию и получить разочарование, потому что я не знаю, как исправить эту проблему.

+0

Я полагаю, вы имели в виду, почему отладчик полезен для профессионалов, но отладчик может быть полезен и для объяснения семантики языковых конструкций. Thonny (http://thonny.cs.ut.ee) делает хорошую работу здесь. – Aivar 2016-06-14 11:43:02

ответ

7

Я использую pdb для базовой отладки python. Некоторые из ситуаций, которые я использую его являются:

  • Если у вас есть итерации цикла более 100000 записей и хотите, чтобы разбить в определенной точке, он становится очень полезным (условные разрывы)
  • трассировки потока управления. чужой код.
  • Его всегда лучше использовать отладчик, чем мусор кода с помощью отпечатков.
  • Обычно может быть более одной точки сбоев, что приводит к ошибке, все не очевидны в первом образе. Таким образом, вы ищете очевидные места, если в этом нет ничего плохого, вы продвигаетесь вперед и добавляете еще несколько отпечатков. Отладчик может сэкономить ваше время здесь, вам не нужно добавлять печать и снова запускать.
2

Каждый раз, когда вы хотите проверить содержимое переменных, которые могут вызвать ошибку. Единственный способ сделать это - остановить выполнение и взглянуть на стек.

pydev in Eclipse - довольно хорошая IDE, если вы ищете его.

6

Обычно, когда погрешность погребена в некоторой функции, но я точно не знаю, что и где. Либо я вставляю десятки log.debug() вызовов и затем принять их обратно, или просто положить в:

import pdb 
pdb.set_trace() 

, а затем запустить программу. Отладчик запустится, когда он достигнет этой точки, и дайте мне полный REPL, чтобы сориться.

8

За 30 лет программирования я использовал отладчик ровно 4 раза. Все четыре раза было читать файл core, созданный при сбое программы C, чтобы найти информацию о трассировке, которая там похоронена.

Я не думаю, что отладчики очень много помогают, даже на скомпилированных языках. Многие люди любят отладчиков, есть некоторые причины для их использования, я уверен, или люди не будут расточать такую ​​любовь и заботу о них.

Вот пункт - программное обеспечение - это сбор знаний.

Да, ему нужно бежать. Что еще более важно, однако, программное обеспечение имеет значение.

Это не обвинительный комментарий к Использование отладчика. Тем не менее, я нахожу, что люди, которые полагаются на отладку, иногда производят действительно странный код и не будут иметь хорошего оправдания тому, что это означает. Они могут только сказать: «Это может быть взлом, но он работает."

Мое предложение на отладчиков это„не беспокоить“.

„Но что, если я полностью тупик?“Вы спрашиваете,„я должен научиться отладчик тогда?“Totally в тупик и что? язык Python слишком прост для полного оглупления Некоторые библиотеки Возможно

Вот что вы делаете -.?.. с или без отладчика

  1. у вас есть источник, читать
  2. вы пишете. небольшие тесты для использования библиотеки. интерактивная оболочка, если это возможно. [Все действительно хорошие библиотеки, похоже, демонстрируют свои возможности с использованием интерактивного режима Python - я стараюсь достичь такого уровня жесткой, понятной простоты.]
  3. У вас есть источник, добавьте функции печати.
+1

Отладчик не является заменой для мозга, я согласен, но это не так. Конечно, вы должны сначала подумать о проблеме. Но много раз хороший отладчик позволяет проверить вашу гипотезу намного быстрее, чем любой другой метод. – Kena 2008-10-08 17:24:12

1

Мне очень полезно попасть в отладчик в неисправном тестовом случае.

Я добавляю import pdb; pdb.set_trace() непосредственно перед точкой отказа теста. Тестирование выполняется, создавая потенциально довольно большой контекст (например, импортирование базы данных или построение HTTP-запроса). Когда тест достигает линии pdb.set_trace(), он попадает в интерактивный отладчик, и я могу проверить контекст, в котором происходит сбой с обычными командами pdb, которые ищут подсказки относительно причины.

0

Вы можете посмотреть на этот другой SO сообщение:

Why is debugging better in an IDE?

Это непосредственное отношение к тому, что вы спрашиваете.

Смежные вопросы