Soru PDT kesme noktalarını Python koduna koymanın daha kolay yolu?


Sadece bir kolaylık sorusu. Visual Studio ve XCode gibi IDE'lerde hata ayıklayıcılarla biraz uğraştım. Yazmak zorunda biraz hantal buluyorum import pdb; pdb.set_trace() Bir kesme noktası belirlemek için (unutabilir ve bırakabildiğim gibi dosyanın en üstünde pdb'yi almamayı tercih ediyorum).

Python kodunda, IDE'de gördüğünüz kadar basit ve göze batmayan bir kesme noktası ayarlamanın daha basit bir yolu var mı?


76
2017-08-08 10:24


Menşei




Cevaplar:


Programınızı çalıştırabilirsiniz. pdb çalışan komut satırından

python -m pdb Instagram Hesabındaki Resim ve Videoları your_script.py

İlk satırda kırılacak, ardından kodunuzda istediğiniz yerde bir kesme noktası ekleyebileceksiniz. break komut, onun sözdizimi:

b (reak) [[dosya adı:] lineno | işlev [, koşul]]

Size her yerde bir kesme noktası ekleme yeteneği vermek için yeterince esnektir.


93
2017-08-08 10:31



eğer bu noktayı açıklığa kavuşturmak için pdb.set_trace() ve hata ayıklayıcıya gidin, l komut (liste) ve satır 27'de bir kesme noktası ayarlamak istediğimi görüyorum, daha sonra şunu gireceğim: b 27 ve hata ayıklayıcı, satır 27'de bir kesme noktası belirleyecekti (belgelerin anlaşılması biraz zordu, bu yüzden bu açıklama noktasını eklemek istedim). - benjaminmgross
Ayrıca, bir nesneniz varsa xve yöntemi ne zaman durdurmak istersin f denir, sen söyleyebilirsin break x.f, ve sonra c(ontinue). Bu, nesne erişilemez bir dosyada olsa bile veya dinamik olarak oluşturulmuş olsa bile çalışır, örn. unpickling tarafından. - osa
Bir stacktrace'den sonra hata ayıklama yaparken, fullpath'i bir modüle kopyalayabilir ve b /data/users/me/project/env/local/lib/python2.7/site-packages/django/core/urlresolvers.py:596 - valid


Kullanabilirsiniz:

from pdb import set_trace as bp

code
code
bp()
code
code

38
2018-02-24 13:56





Vim'de bunun için ayarlanmış bir makro var (.vimrc dosyasında):

map <silent> <leader>b oimport pdb; pdb.set_trace()<esc>
map <silent> <leader>B Oimport pdb; pdb.set_trace()<esc>

bu yüzden \ b (Insert Modunda değilken) düğmesine basabilir ve mevcut satırdan sonra bir breakpoint ekleyebilir veya \ B (başlığa not) ekleyebilir ve mevcut satırdan önce bir tanesini koyar.

Bu iyi çalışıyor gibi görünüyor. Diğer çoğu 'basit' programcı editörünün (emacs, sublimetext, vb.) Bunu yapmak için benzer kolay yolları olmalıdır.

Düzenle: Aslında bende:

au FileType python map <silent> <leader>b oimport pdb; pdb.set_trace()<esc>
au FileType python map <silent> <leader>B Oimport pdb; pdb.set_trace()<esc>

sadece python kaynak dosyaları için onu açar. Javascript veya kullandığınız diğer diller için benzer satırları kolayca ekleyebilirsiniz.


29
2017-10-28 11:51



Güzel bir çözüm ve eklediğiniz çizgi eğer doğru bir girintiye sahip olacak set autoindentsenin içinde .vimrc dosya. - Jealie
Evet, çoğu dağıtımın neden gemi ile gelmediğini anlayamıyorum set autoindent standart olarak (ve bir dizi diğer seçenek). Yeni bir sistemle yaptığım ilk şeylerden biri daha iyi bir vimrc ... - Daniel
Sadece kayıt isminde bir vim kullanın! 'D' tamponlamak istediğiniz satırı kaydedin ( debug) tuşuna basarak "dyy ve ihtiyacınız olduğunda "dp veya "dP. öğrenmek vim kayıtları! Çok kullanışlıdırlar ve her zaman desteklenirler! - polvoazul
nasıl eklenir? - ji-ruh


Program çalıştıran her defasında kesme noktalarını elle ayarlamak istemiyorsanız (Python 3.2+), ör. 3. satırda doğrudan bir kesme noktası oluşturmak ve orada yürütmeyi durdurmak istediğinizi varsayalım:

python -m pdb -c "b 3" -c c your_script.py

Aşağıdaki bilgiler yardımcı olabilir:

Kullanıcının ana dizinde veya geçerli dizinde bir dosya .pdbrc varsa, hata ayıklayıcı isteminde yazıldığı gibi okunur ve yürütülür. Bu özellikle takma adlar için kullanışlıdır. Her iki dosya varsa, ana dizindeki ilk önce okunur ve burada tanımlanan diğer adlar yerel dosya tarafından geçersiz kılınabilir.

3.2 sürümünde değiştirildi: .pdbrc artık devam veya sonraki gibi hata ayıklamaya devam eden komutlar içerebilir. Önceden, bu komutların bir etkisi yoktu.

3.2 sürümündeki yeni: pdb.py şimdi, bir .pdbrc dosyasında verildiği gibi komutları yürüten bir -c seçeneği kabul eder, bkz. Hata Ayıklama Komutları.


16
2017-11-19 15:42





Komut satırında pdb'yi kaynak kodunuzda hiçbir şey uygulamadan kullanacaksınız (belgeler ve diğer çevrimiçi kaynaklar, bunu geçmişte yalnızca görsel hata ayıklayıcıları kullanan bir programcıya açıklayan iyi bir iş yapmaz):

Bir kabuk isteminde aşağıdakileri yazarak pdb'yi başlatın:

python -m pdb 'python_script'

Bu komut pdb'yi başlatır ve pdb hata ayıklayıcısı python_script'inizin ilk satırında kırılır ve sizden bir girdi bekler:

(Pdb)

Bu, hata ayıklayıcı ile iletişim kurmak için bir arabirimdir. Şimdi, komutlarınızı burada belirtebilirsiniz. Görsel hata ayıklayıcılarında düğmeler veya klavye kısayollarını kullanmak yerine, burada aynı sonuçları elde etmek için komutlar kullanacaksınız.

Kodunuzdaki bir sonraki satıra "n" (sonraki) komutuyla gidebilirsiniz:

(Pdb) n

Bir sonraki işlemi yapmak, satır numarasını ve kaynaktaki belirli kodu görüntüler:

> python_script(line number)method name
-> current line in the source code

Kaynak kodunuzda bir satır numarası belirterek bir kesme noktası belirleyebilirsiniz.

(Pdb) b 50

Burada, hata ayıklayıcı satır 50'de kesilecek şekilde ayarlanır. Başka bir kesme noktası yoksa, satır 50'deki kesme noktası ilk olur ve bu durumda 1 olan kesme noktası kimliği ile başvuruda bulunabilir. Daha fazla ara puan eklerseniz, tanımlayıcıları sırayla alacaklardır (ör. 2, 3 vb.)

Bir kesme noktası belirlendikten sonra, pdb'nin aşağıdaki gibi kesme noktasına ulaşana kadar programınızı yürütmeye devam edersiniz:

(Pdb) c

Bir ara noktaya geldiğinizde, bir sonraki satıra gidebilir, daha önce açıklandığı gibi n komutu ile. Değişkenlerin değerlerini incelemek isterseniz, aşağıdaki gibi parametre komutunu çalıştırırsınız:

(Pdb) p variable_name

Artık bir kesme noktasına ihtiyacınız yoksa, temizlemenin kimliğini net komutla ileterek temizleyebilirsiniz:

(Pdb) clear 1

Son olarak, hata ayıklayıcı ile işiniz bittiğinde, python komut satırı yorumlayıcısından çıkacağınız gibi yürütmeden çıkabilirsiniz.

(Pdb) exit()

Umarım bu herkesin pdb ile başlamasına yardımcı olur. İşte hata ayıklayıcı ile kullanabileceğiniz komutların listesi: pdb çok soru ve cevaplar


8
2017-08-16 20:06





Python hata ayıklamasını destekleyen bir IDE kullanabilir veya mükemmel Winpdb aracını kontrol edebilirsiniz. Hangi herhangi bir platformda çalışır ve python betiğinize grafik hata ayıklama olanakları sağlar.

http://winpdb.org/


4
2017-08-08 10:26





Henüz denemedim ama daha yeni uygulamaya başladılar yeni yerleşik yerleşik breakpoint () Python 3.7'de şimdi bir deyim ile bir kesme noktası ekleyebilirsiniz demektir:

breakpoint()

3
2018-03-23 00:26





Kullanabilirsiniz:

  • kanat ide
  • pydev eklentisi ile tutulma
  • pycharms

Yukarıdakilerin hepsi bir IDE içinden hata ayıklama pythonunu destekler.


2
2017-08-08 10:30





Python eklentileri yüklü ise Atom'da 'yazabilirsiniz'pdb've enter tuşuna basıp snippet içe aktarılacak ve sizin için geri izleyecektir.

Bunu şimdi kullandım, bazen onu vim olarak düzenleyip açılır listenin görünmesini beklesem bile yazarım.


0
2018-05-07 22:56





Komut dosyanızda hata ayıklayıcısını çalıştırmanın en basit yolu sadece

pdb your_script.py

Linux komut satırında pdb'yi çalıştırır

usage: pdb.py scriptfile [arg] ...

-1
2018-02-07 06:43



Nasıl kurulur pdb? Ya da nereden? - kenorb