pdb

2015-01-03 16 views
5

içinde "sonraki" ve "kadar" arasındaki fark nedir? Python 2.6.6 kullanıyorum ve Python programımı hata ayıklamak için pdb kullanıyorum, ancak "sonraki" ve "arasındaki farkın ne olduğu konusunda net değilim. "pdb'de, her ikisi de mevcut işlevdeki bir sonraki satıra kadar yürütmeye devam edecek gibi görünüyor.pdb

cevap

3

Pdb yardım dokümanı bu şekilde açıklar: fark gösterilmektedir Daha yardımsever

(Pdb) help next 
n(ext) 
Continue execution until the next line in the current function 
is reached or it returns. 

(Pdb) help until 
unt(il) 
Continue execution until the line with a number greater than the current 
one is reached or until the current frame returns 

, Doug Hellman gives an example in his Python Module Tutorial of the Week:

komutu, bir sonraki gibidir kadar açıkça yürütme kadar ulaşır devam hariç Aynı işlevdeki bir satır mevcut değerinden daha yüksek bir satır numarasıyla. Bu, örneğin, 'un sonuna bir döngü atlamak için kullanılabileceği anlamına gelir.

pdb_next.py

import pdb 

def calc(i, n): 
    j = i * n 
    return j 

def f(n): 
    for i in range(n): 
     j = calc(i, n) 
     print i, j 
    return 

if __name__ == '__main__': 
    pdb.set_trace() 
    f(5) 

$ python pdb_next.py 
> .../pdb_next.py(21)<module>() 
-> f(5) 
(Pdb) step 
--Call-- 
> .../pdb_next.py(13)f() 
-> def f(n): 

(Pdb) step 
> .../pdb_next.py(14)f() 
-> for i in range(n): 

(Pdb) step 
> .../pdb_next.py(15)f() 
-> j = calc(i, n) 

(Pdb) next 
> .../pdb_next.py(16)f() 
-> print i, j 

(Pdb) until 
0 0 
1 5 
2 10 
3 15 
4 20 
> .../pdb_next.py(17)f() 
-> return 

(Pdb) 

çalıştırıldı kadar önce, mevcut hat 16, döngünün son çizgi. Koşulana kadar, yürütme 17 numaralı hat üzerinde yapıldı ve döngü tükendi.

until amacı eponymous gdb command paylaşılmaktadır:

mevcut yığın çerçevede, mevcut hattı geçen bir kaynak hattı kadar çalıştırmaya devam ulaşılana

kadar. Bu komut, bir döngüyü birden fazla kez geçirerek tek önlemek için kullanılır. Bir sonraki komut, gibi, bir atlama ile karşılaşana kadar, program sayacı atlama adresinden daha büyük olana kadar otomatik olarak yürütülmesine devam eder. Bu, tek bir adımdan sonra bir döngünün sonuna eriştiğinizde, programınızı döngüsüne kadar yürütmeye devam edene kadar döndürdüğünüz anlamına gelir. Buna karşılık, döngüsünün sonundaki bir sonraki komut, döngünün başlangıcına geri döner ve bu da sizi bir sonraki yineleme boyunca adımına zorlar.

İlgili konular