Bagaimana saya bisa melewati satu loop menggunakan pdb.set_trace()
?
Sebagai contoh,
pdb.set_trace()
for i in range(5):
print(i)
print('Done!')
pdb
meminta sebelum loop. Saya memasukkan perintah. Semua 1-5 nilai dikembalikan dan kemudian saya ingin ditanyai pdb
lagi sebelum print('Done!')
eksekusi.
n
, lalu ketikuntil
. Ini akan berlangsung sampai setidaknya garis saat ini terlampaui.f
digunakan olehdebug
fungsi R yang "menyelesaikan eksekusi loop atau fungsi saat ini" ( adv-r.hadley.nz/debugging.html )?until
(atau bentuk singkatnyaunt
) tanpa argumen akan selalu turun satu baris (kecuali Anda menekan pernyataan return), jadi Anda juga bisa menggunakannya berkali-kali daripadan
.breakpoint()
set di loop masukpython 3
. TheVB Editor
dapat menerima breakpoints 'on the fly', tapi ini kemungkinan besar tidak terjadi denganpdb
.Anda harus menetapkan breakpoint setelah loop ("break main.py:4" dengan anggapan baris di atas ada dalam file bernama main.py) dan kemudian lanjutkan ("c").
sumber
Di tautan yang disebutkan oleh jawaban yang diterima ( https://pymotw.com/3/pdb/ ), saya menemukan bagian ini agak lebih membantu:
Berikut adalah contoh cara kerja re: loop:
Ini menghindarkan Anda dari dua hal: harus membuat breakpoint ekstra, dan harus menavigasi ke akhir loop (terutama saat Anda mungkin sudah mengulang sehingga Anda tidak akan dapat melakukannya tanpa menjalankan ulang debugger).
Berikut dokumen Python
until
. Btw Saya menggunakanpdb++
sebagai drop-in untuk debugger standar (karena itu pemformatannya) tetapiuntil
berfungsi sama di keduanya.sumber
Anda dapat mengatur breakpoint lain setelah loop dan melompat ke sana (saat debugging) dengan
c
:sumber
Jika saya mengerti ini dengan benar.
Salah satu cara yang mungkin untuk melakukan ini adalah:
Setelah Anda mendapatkan Anda
pdb
prompt. Tekan sajan
(berikutnya) 10 kali untuk keluar dari loop.Namun, saya tidak mengetahui cara untuk keluar dari loop masuk
pdb
.Anda dapat menggunakan
r
untuk keluar dari suatu fungsi.sumber