Z tego co wiem, pdb nie rozpoznaje, kiedy kod źródłowy zmienił się pomiędzy "uruchomieniami". Oznacza to, że jeśli debuguję, zauważ błąd, napraw błąd i uruchom program w pdb (tzn. Bez wychodzenia z pdb), pdb nie przekompiluje kodu. Nadal będę debugować starą wersję kodu, nawet jeśli pdb zawiera nowy kod źródłowy.Jak uczynić pdb rozpoznać, że źródło zmieniło się między biegami?
Czy pdb nie aktualizuje skompilowanego kodu jako zmiany źródła? Jeśli nie, czy istnieje sposób, aby to zrobić? Chciałbym móc pozostać w pojedynczej sesji pdb, aby zachować moje punkty przerwania i takie.
FWIW, gdb zauważy, że program, pod którym debuguje zmiany, jest pod nim, ale tylko po ponownym uruchomieniu tego programu. To jest zachowanie, które próbuję replikować w pdb.
Co mam na myśli przez "powtórka" jest pojęciowo, co mam na myśli przez ponowne uruchomienie programu z Pythona wiersz poleceń. pdb wyraźnie rozumie pojęcie mojego programu, więc zastanawiam się, kiedy uruchomi mój program po raz drugi, jeśli uda mi się go skompilować w razie potrzeby. – user88028
Możesz spróbować użyć 'reload' z wewnątrz pdb przed ponownym uruchomieniem, ale znowu, w zależności od struktury twojego programu, może on nie być niezawodny. (FWIW, uważam to za największą porażkę Pythona jako języka, pochodzącego ze środowisk takich jak Smalltalk i Lisp, to po prostu przygnębiające.) –
@NicholasRiley Chciałbym włączyć xreload jako polecenie w pythonowych debuggerach (trepan3k https: //pypi.python.org/pypi/trepan3k i trepan2 https://pypi.python.org/pypi/trepan2). Są to GPL3. Czy to w porządku? Czy jesteś autorem? – rocky