Можете ли вы пройти через код python, чтобы помочь отладить проблемы?



в java / c# вы можете легко пройти через код, чтобы проследить, что может пойти не так, и IDE делают этот процесс очень удобным для пользователя.



можете ли вы проследить через код python аналогичным образом?

488   11  

11 ответов:

да! Есть отладчик Python под названием pdb только за это!

вы можете запустить программу Python через pdb с помощью pdb myscript.py или python -m pdb myscript.py.

есть несколько команд, которые вы можете затем выдать, которые документированы на pdb страница.

некоторые полезные из них, чтобы помнить:

  • b: задайте точку останова
  • c: продолжайте отладку, пока не нажмете точка останова
  • s: шаг через код
  • n: чтобы перейти к следующей строке кода
  • l: список исходного кода для текущего файла (по умолчанию: 11 линий, включая линии выполняются)
  • u: перейдите вверх по кадру стека
  • d: перейдите вниз по кадру стека
  • p: чтобы вывести значение выражения в текущем контексте

если вы не хотите использовать отладчик командной строки, некоторые IDE, как пункт PyDev есть отладчик GUI.

С помощью интерактивного отладчика Python 'pdb'

первый шаг-заставить интерпретатор Python войти в режим отладки.

A. из командной строки

самый прямой путь, запущенный из командной строки, интерпретатора python

$ python -m pdb scriptName.py
> .../pdb_script.py(7)<module>()
-> """
(Pdb)

Б. В переводчик

при разработке ранних версий модулей и экспериментировать с ним больше итеративный.

$ python
Python 2.7 (r27:82508, Jul  3 2010, 21:12:11)
[GCC 4.0.1 (Apple Inc. build 5493)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import pdb_script
>>> import pdb
>>> pdb.run('pdb_script.MyObj(5).go()')
> <string>(1)<module>()
(Pdb)

C. Из Вашей Программы

для большого проекта и длительного модуля, можно начать отладку изнутри программы с помощью импорт pdb и set_trace () вот так:

#!/usr/bin/env python
# encoding: utf-8
#

import pdb

class MyObj(object):
    count = 5
    def __init__(self):
        self.count= 9

    def go(self):
        for i in range(self.count):
            pdb.set_trace()
            print i
        return

if __name__ == '__main__':
    MyObj(5).go()

Пошаговая отладка, чтобы перейти в более внутренний

  1. выполните следующую инструкцию ... с "n" (далее)

  2. повторение последней команды отладки... с введите

  3. бросить все это... с "q" (ушел)

  4. печать значения переменных... с помощью "p" (print)

    a)п

  5. отключение подсказки (Pdb)... с помощью "c" (продолжение)

  6. видя, где вы находитесь... с "l" (список)

  7. переход в подпрограммы ... с "s" (шаг в)

  8. продолжение... но только до конца текущей подпрограммы... с "r" (возвращение)

  9. присвоить новое значение

    a)!b = "B"

  10. установить точку останова

    a) break linenumber

    б) перерыв имя_функции

    c)имя файла разрыва: linenumber

  11. временная точка останова

    a)tbreak linenumber

  12. условная точка останова

    a)номер строки разрыва, условие

Примечание:* * все эти команды должны выполняться из * * pdb

для углубленного знания, см.: -

https://pymotw.com/2/pdb/

https://pythonconquerstheuniverse.wordpress.com/2009/09/10/debugging-in-python/

в python есть модуль под названием "pdb". В верхней части вашего скрипта Python вы делаете

import pdb
pdb.set_trace()

и вы войдете в режим отладки. Вы можете использовать " s "для шага, "n", чтобы следовать следующей строке, аналогичной тому, что вы сделали бы с отладчиком "gdb".

Если вы пришли из Java / C# фон я думаю, что ваш лучший выбор будет использовать затмение С пункт PyDev. Это дает вам полностью функциональную IDE со встроенным отладчиком. Я использую его и с Джанго.

Если вы хотите IDE со встроенным отладчиком, попробуйте PyScripter.

начиная с Python 3.7, вы можете использовать breakpoint() встроенная функция для ввода отладчика:

foo()
breakpoint()  # drop into the debugger at this point
bar()

по умолчанию breakpoint() импорт pdb и звонок pdb.set_trace(). Однако вы можете управлять поведением отладки через sys.breakpointhook() и использование переменной окружения PYTHONBREAKPOINT.

посмотреть PEP 553 для получения дополнительной информации.

программно шагать и трассировка через код python тоже возможно (и его легко!). Посмотрите на sys.settrace() документация для более подробной информации. Также здесь - это учебник, чтобы вы начали.

Visual Studio с PTVS может быть вариантом для вас: http://www.hanselman.com/blog/OneOfMicrosoftsBestKeptSecretsPythonToolsForVisualStudioPTVS.aspx

https://wiki.python.org/moin/PythonDebuggingTools

pudb-хорошая замена для pdb

PyCharm-это IDE для Python, которая включает в себя отладчик. Смотрите это видео на YouTube для ознакомления с использованием отладчика PyCharm для пошагового выполнения кода.

PyCharm учебник-отладка кода python с помощью PyCharm

Примечание: это не должно быть одобрение или обзор. PyCharm-это коммерческий продукт, за который нужно платить, но компания предоставляет бесплатную лицензию студентам и преподавателям, а также "легкую" версию сообщества, которая является бесплатным и открытым исходным кодом.

Screenshot

вы можете посмотреть python debugger что делает именно то, что вы ищете, только не через GUI

Comments

    Ничего не найдено.