Czy możesz przejść przez kod Pythona, aby pomóc w debugowaniu problemów?
W Javie / c# możesz łatwo przejść przez kod, aby prześledzić, co może pójść nie tak, a IDE czyni ten proces bardzo przyjaznym dla użytkownika.
Czy możesz prześledzić kod Pythona w podobny sposób?
11 answers
Tak! Jest debugger Pythona o nazwie pdb
właśnie do tego!
Możesz uruchomić program Pythona poprzez {[0] } używając pdb myscript.py
lub python -m pdb myscript.py
.
Istnieje kilka poleceń, które możesz następnie wydać, które są udokumentowane na pdb
Strona.
Niektóre przydatne do zapamiętania to:
-
b
: ustawia punkt przerwania -
c
: Kontynuuj debugowanie, aż do osiągnięcia punktu przerwania -
s
: przejdź przez kod -
n
: aby przejść do następny wiersz kodu -
l
: wyświetla kod źródłowy bieżącego pliku (domyślnie: 11 linii, łącznie z wykonywaną linią) -
u
: poruszanie się po ramce stosu -
d
: Nawiguj w dół ramki stosu -
p
: wyświetla wartość wyrażenia w bieżącym kontekście
Jeśli nie chcesz używać debugera linii poleceń, niektóre IDE, takie jak Pydev mają debugger GUI.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-02-06 14:19:02
Używając interaktywnego debuggera Pythona ' pdb '
Pierwszym krokiem jest uruchomienie interpretera Pythona w trybie debugowania.
A. z linii poleceń
Najbardziej prosta droga, uruchamiana z wiersza poleceń interpretera Pythona
$ python -m pdb scriptName.py
> .../pdb_script.py(7)<module>()
-> """
(Pdb)
B. wewnątrz tłumacza
Podczas opracowywania wczesnych wersji modułów i eksperymentowania z nimi bardziej iteracyjnie.
$ 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. From Within Your Program
Dla dużego projekt i długotrwały moduł, może rozpocząć debugowanie z wnętrza programu za pomocą import pdb i set_trace () tak:
#!/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()
Debugowanie krok po kroku, aby przejść do bardziej wewnętrznego
-
Wykonaj polecenie next... z "n" (next)
Powtórzenie ostatniego polecenia debugowania ... z ENTER
-
Quit it all ... with " q " (quit)
-
Drukowanie wartości zmienne ... Z "p "(print)
A) p a
-
Wyłączanie znaku zachęty (Pdb) ... za pomocą " c " (continue)
-
Widząc gdzie jesteś ... z " l " (lista)
-
Krok do podprogramów ... z " s " (krok do)
-
Kontynuując ... ale tylko do końca bieżącego podprogramu ... z " r " (return)
-
Przypisanie nowej wartości
A) !b = "B"
-
Ustaw punkt przerwania
A) break linenumber
B) break functionname
C) break filename: linenumber
-
Tymczasowy punkt przerwania
A) tbreak linenumber
-
Warunkowy punkt przerwania
A) break linenumber, condition
Uwaga: * * wszystkie te polecenia powinny być wykonywane z * * pdb
Do dogłębnego wiedza, refer: -
Https://pythonconquerstheuniverse.wordpress.com/2009/09/10/debugging-in-python/
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-08-25 09:38:01
Istnieje moduł o nazwie 'pdb' w Pythonie. Na górze skryptu Pythona robisz
import pdb
pdb.set_trace()
I wejdziesz w tryb debugowania. Możesz użyć' s', aby wykonać krok, 'n', aby przejść do następnego wiersza, podobnie jak w przypadku debuggera 'gdb'.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-02-08 03:24:35
Jeśli pochodzisz z tła Java / C# to chyba najlepiej byłoby użyć Eclipse z Pydev . Daje to w pełni funkcjonalne IDE z wbudowanym debuggerem. Używam go również z django.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-01-20 15:24:54
Jeśli chcesz mieć IDE ze zintegrowanym debuggerem, spróbuj PyScripter.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-02-08 03:52:44
Począwszy od Pythona 3.7, możesz użyć breakpoint()
wbudowana funkcja do wprowadzania debuggera:
foo()
breakpoint() # drop into the debugger at this point
bar()
Domyślnie, breakpoint()
będzie importować pdb
i zadzwoń pdb.set_trace()
. Można jednak kontrolować zachowanie debugowania za pomocą sys.breakpointhook()
i wykorzystanie zmiennej środowiskowejPYTHONBREAKPOINT
.
Zobacz PEP 553 aby uzyskać więcej informacji.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-08-27 13:47:36
Programowo przechodzenie i śledzenie przez kod Pythona jest również możliwe (i to proste!). Spójrz na sys.settrace () Dokumentacja po więcej szczegółów. Również tutaj jest samouczek, aby zacząć.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-04-12 09:58:15
Visual Studio z PTVS może być dla Ciebie opcją: http://www.hanselman.com/blog/OneOfMicrosoftsBestKeptSecretsPythonToolsForVisualStudioPTVS.aspx
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-08-19 18:50:21
Https://wiki.python.org/moin/PythonDebuggingTools
Pudb jest dobrym zamiennikiem pdb
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-08-26 13:32:09
PyCharm jest IDE dla Pythona, który zawiera debugger. Obejrzyj ten film na YouTube, aby zapoznać się z wprowadzeniem do używania debuggera PyCharm do przechodzenia przez kod.
PyCharm Tutorial-debugowanie kodu Pythona za pomocą PyCharm
Uwaga: to nie jest przeznaczone do poparcia lub przeglądu. PyCharm to produkt komercyjny, za który trzeba zapłacić, ale firma zapewnia bezpłatną licencję uczniom i nauczycielom, a także "lekką" wersję społeczności, która jest darmowa i open-source.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-07-19 21:05:40
Możesz spojrzeć na debugger Pythona który robi dokładnie to, czego szukasz, tylko nie przez GUI
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-02-08 03:26:45