Visual Studio memberikan pengalaman penelusuran kesalahan yang komprehensif untuk Python. Dalam artikel ini, Anda menjelajahi cara melampirkan debugger untuk menjalankan proses dan mengevaluasi ekspresi di jendela Tonton dan Segera . Di debugger, Anda dapat memeriksa variabel lokal, menggunakan titik henti, langkah masuk/keluar/atas pernyataan, Mengatur Pernyataan Berikutnya, dan banyak lagi.
Untuk informasi penelusuran kesalahan khusus skenario, lihat artikel berikut ini:
Jika Anda ingin mengontrol lingkungan dan argumen Python, pertama-tama buat proyek untuk kode Anda. Anda dapat membuat proyek dengan templat Dari proyek kode Python yang ada. Untuk informasi selengkapnya, lihat Membuat proyek dari file kode Python yang ada.
Namun, Anda tidak memerlukan file proyek atau solusi di Visual Studio untuk men-debug kode Python Anda. Untuk men-debug kode dalam file Python mandiri, buka file Anda di Visual Studio, dan pilih Debug>Mulai Penelusuran Kesalahan. Visual Studio meluncurkan skrip dengan lingkungan default global dan tanpa argumen. Anda kemudian memiliki dukungan penelusuran kesalahan penuh untuk kode Anda. Untuk informasi selengkapnya, lihat Lingkungan Python.
Menjelajahi penelusuran kesalahan dasar
Alur kerja penelusuran kesalahan dasar melibatkan titik henti pengaturan, menelusuri kode, memeriksa nilai, dan menangani pengecualian. Anda dapat memulai sesi penelusuran kesalahan dengan memilih Debug>Mulai Penelusuran Kesalahan atau menggunakan pintasan keyboard F5. Untuk proyek, tindakan ini meluncurkan file startup dengan lingkungan aktif proyek dan argumen baris perintah atau jalur pencarian yang ditentukan untuk Properti Proyek. Untuk mengonfigurasi properti, lihat Mengatur opsi penelusuran kesalahan proyek.
Mengatur file startup proyek
File startup untuk proyek ditampilkan dalam huruf tebal di Penjelajah Solusi. Anda dapat memilih file mana yang akan digunakan sebagai file startup.
Untuk menentukan file proyek sebagai file startup, klik kanan file dan pilih Atur sebagai Item Startup.
Di Visual Studio 2017 versi 15.6 dan yang lebih baru, Anda akan melihat pemberitahuan jika Anda tidak memiliki kumpulan file startup tertentu. Versi Visual Studio yang lebih lama mungkin membuka jendela Output dengan penerjemah Python berjalan, atau jendela Output terbuka dan ditutup secara singkat.
Tentukan lingkungan aktif
Jika Anda menggunakan file proyek, debugger selalu dimulai dengan lingkungan Python aktif untuk proyek. Anda dapat mengubah lingkungan aktif saat ini. Untuk informasi selengkapnya, lihat Memilih lingkungan Python untuk proyek.
Jika Anda men-debug file kode Python mandiri, Visual Studio meluncurkan skrip dengan lingkungan default global dan tanpa argumen.
Mengatur titik henti
Titik henti menghentikan eksekusi kode pada titik yang ditandai sehingga Anda dapat memeriksa status program.
Beberapa titik henti di Python mungkin mengejutkan bagi pengembang yang telah bekerja dengan bahasa pemrograman lainnya. Dalam Python, seluruh file adalah kode yang dapat dieksekusi, sehingga Python menjalankan file saat dimuat untuk memproses definisi kelas tingkat atas atau fungsi apa pun. Jika titik henti diatur, Anda mungkin menemukan debugger melanggar sebagian melalui deklarasi kelas. Perilaku ini benar, meskipun terkadang mengejutkan.
Untuk mengatur titik henti, pilih di margin kiri editor kode atau klik kanan baris kode dan pilih Titik Henti>Sisipkan Titik Henti. Titik merah muncul di setiap baris yang memiliki titik henti yang ditetapkan.
Untuk menghapus titik henti, pilih titik merah atau klik kanan baris kode dan pilih Breakpoint>Delete Breakpoint. Anda juga dapat menonaktifkan titik henti dengan memilih titik merah dan memilih Titik Henti>Nonaktifkan Titik Henti.
Mengatur kondisi dan tindakan
Anda dapat menyesuaikan kondisi di mana titik henti dipicu, seperti hanya melanggar saat variabel diatur ke nilai atau rentang nilai tertentu.
Untuk mengatur kondisi, klik kanan titik merah titik henti, pilih Kondisi. Dialog Pengaturan Titik Henti terbuka.
Dalam dialog, Anda dapat menambahkan beberapa kondisi dan membuat ekspresi kondisional dengan menggunakan kode Python. Untuk detail selengkapnya tentang fitur ini di Visual Studio, lihat Kondisi titik henti.
Anda juga memiliki opsi untuk mengatur Tindakan untuk titik henti. Anda dapat membuat pesan untuk masuk ke jendela Output dan secara opsional menentukan untuk melanjutkan eksekusi secara otomatis.
Mencatat pesan membuat titik pelacakan yang tidak menambahkan kode pengelogan ke aplikasi Anda secara langsung.
Bergantung pada bagaimana Anda mengonfigurasi kondisi dan tindakan untuk titik henti, ikon merah di margin kiri berubah untuk menunjukkan pengaturan Anda. Anda mungkin melihat bentuk titik, timer jam, atau berlian.
Langkah melalui kode
Saat Visual Studio menghentikan eksekusi kode pada titik henti, ada beberapa perintah yang dapat Anda gunakan untuk menelusuri kode Anda atau menjalankan blok kode sebelum melanggar lagi. Perintah tersedia di beberapa tempat di Visual Studio, termasuk toolbar Debugger , menu Debug , menu konteks klik kanan di editor kode, dan melalui pintasan keyboard.
Tabel berikut ini meringkas perintah ini dan menyediakan pintasan keyboard:
Perintah
Pintasan
Deskripsi
Stop
Shift + F5
Hentikan sesi penelusuran kesalahan.
Hidupkan Ulang
Ctrl + Shift + F5
Mulai ulang sesi penelusuran kesalahan saat ini.
Lanjutkan
F5
Jalankan kode hingga Anda mencapai titik henti berikutnya.
Step Into
F11
Jalankan pernyataan berikutnya dan hentikan. Jika pernyataan berikutnya adalah panggilan ke fungsi, debugger berhenti di baris pertama fungsi yang disebut.
Step Over
F10
Jalankan pernyataan berikutnya, termasuk melakukan panggilan ke fungsi (menjalankan semua kodenya) dan menerapkan nilai pengembalian apa pun. Perintah ini memungkinkan Anda untuk dengan mudah melewati fungsi yang tidak perlu Anda debug.
Keluar
Shift+F11
Jalankan kode hingga akhir fungsi saat ini, lalu masuk ke pernyataan panggilan. Perintah ini berguna ketika Anda tidak perlu men-debug sisa fungsi saat ini.
Run to Cursor
Ctrl+F10
Jalankan kode hingga ke lokasi tanda sisipan di editor. Perintah ini memungkinkan Anda untuk dengan mudah melewati segmen kode yang tidak perlu Anda debug.
Set Next Statement
Ctrl+Shift+F10
Ubah titik eksekusi saat ini dalam kode ke lokasi tanda sisipan. Perintah ini memungkinkan Anda untuk menghilangkan segmen kode agar tidak dijalankan sama sekali, seperti ketika Anda tahu kode rusak atau menghasilkan efek samping yang tidak diinginkan.
Show Next Statement
Alt+Num+\
Kembali ke pernyataan berikutnya untuk dijalankan dalam kode. Perintah ini membantu Anda menemukan tempat dalam kode Tempat debugger dihentikan.
Memeriksa dan memodifikasi nilai
Saat menghentikan eksekusi kode di debugger, Anda dapat memeriksa dan memodifikasi nilai variabel. Anda juga dapat menggunakan jendela Watch untuk memantau variabel individual dan ekspresi kustom. Untuk informasi selengkapnya, lihat Memeriksa variabel.
Untuk melihat nilai dengan menggunakan fitur DataTips selama penelusuran kesalahan, arahkan mouse ke atas variabel apa pun di editor. Anda dapat memilih nilai variabel untuk mengubahnya:
Untuk menggunakan jendela Otomatis, pilih Debug>Windows>Autos. Jendela ini berisi variabel dan ekspresi yang dekat dengan pernyataan saat ini. Anda dapat mengklik dua kali di kolom nilai atau memilih dan memasukkan F2 untuk mengedit nilai:
Untuk informasi selengkapnya tentang menggunakan jendela Otomatis , lihat Memeriksa variabel di jendela Otomatis dan Lokal.
Untuk menggunakan jendela Lokal, pilih Debug>Windows>Locals. Jendela ini menampilkan semua variabel yang berada dalam cakupan saat ini, yang dapat diedit lagi:
Untuk informasi selengkapnya tentang menggunakan jendela Lokal , lihat Memeriksa variabel di jendela Otomatis dan Lokal.
Untuk menggunakan jendela Tonton, pilih Debug>Windows>Watch>Watch 1-4. Opsi ini memungkinkan Anda memasukkan ekspresi Python arbitrer dan melihat hasilnya. Ekspresi dievaluasi ulang untuk setiap langkah:
Untuk memeriksa nilai string, pilih Tampilkan (kaca pembesar) di sisi kanan entri Nilai . Jenis str, unicode, bytes, dan bytearray semuanya tersedia untuk inspeksi.
Menu dropdown Tampilan menampilkan empat opsi visualisasi: Teks, HTML, XML, atau JSON.
Setelah Anda memilih visualisasi, dialog popup memperlihatkan nilai string yang tidak dikutip sesuai dengan jenis yang dipilih. Anda dapat melihat string dengan pembungkusan dan pengguliran, penyorotan sintaksis, dan tampilan pohon. Visualisasi ini dapat membantu men-debug masalah dengan string panjang dan kompleks.
Menampilkan pengecualian
Jika terjadi kesalahan dalam program Anda selama penelusuran kesalahan, tetapi Anda tidak memiliki handler pengecualian untuk itu, debugger akan berhenti pada titik pengecualian:
Ketika terjadi kesalahan, Anda dapat memeriksa status program saat ini, termasuk tumpukan panggilan. Namun, jika Anda menelusuri kode, proses penelusuran kesalahan terus melemparkan pengecualian sampai ditangani atau program Anda keluar.
Untuk melihat tampilan pengecualian yang diperluas, pilih Debug>Pengaturan Pengecualian Windows.>
Di jendela Pengaturan Pengecualian, kotak centang berikutnya pengecualian mengontrol apakah debugger selalu rusak saat pengecualian tersebut dinaikkan.
Untuk memecah lebih sering untuk pengecualian tertentu, pilih kotak centang di samping pengecualian di jendela Pengaturan Pengecualian.
Secara default, sebagian besar pengecualian terputus saat handler pengecualian tidak dapat ditemukan dalam kode sumber. Untuk mengubah perilaku ini, klik kanan pengecualian apa pun dan ubah opsi Lanjutkan Saat Tidak Ditangani dalam Kode Pengguna. Untuk memecah lebih jarang pengecualian, batal pilih opsi ini.
Untuk mengonfigurasi pengecualian yang tidak muncul di jendela Pengaturan Pengecualian, pilih Tambahkan (simbol plus). Masukkan nama untuk pengecualian yang akan ditonton. Nama harus cocok dengan nama lengkap pengecualian.
Mengonfigurasi opsi penelusuran kesalahan proyek
Secara default, debugger memulai program Anda dengan peluncur Python standar, tidak ada argumen baris perintah, dan tidak ada jalur atau kondisi khusus lainnya. Anda dapat mengonfigurasi opsi startup untuk proyek Python dengan mengatur properti debug.
Untuk mengakses properti debug untuk proyek, klik kanan proyek Python Anda di Penjelajah Solusi, pilih Properti, lalu pilih tab Debug.
Bagian berikut ini menjelaskan properti tertentu.
Menentukan perilaku peluncuran
Tabel berikut ini mencantumkan nilai yang mungkin untuk properti Mode peluncuran. Gunakan properti ini untuk menentukan perilaku peluncuran untuk debugger.
Nilai
Deskripsi
Peluncur Python standar
Gunakan kode penelusuran kesalahan yang ditulis dalam Python portabel yang kompatibel dengan CPython, IronPython, dan varian seperti Stackless Python. Opsi ini memberikan pengalaman terbaik untuk men-debug kode Python murni. Saat Anda melampirkan ke proses yang sedang berjalan python.exe , peluncur yang ditentukan dalam properti ini digunakan. Peluncur ini juga menyediakan debugging mode campuran untuk CPython, yang memungkinkan Anda untuk melangkah dengan mulus antara kode C/C++ dan kode Python.
Peluncur web
Mulai browser default Anda saat peluncuran dan aktifkan penelusuran kesalahan templat. Untuk informasi selengkapnya, lihat bagian Penelusuran kesalahan templat Web.
Peluncur Web Django
Terapkan perilaku identik ke properti peluncur Web tetapi untuk lingkungan Django. Gunakan opsi ini hanya untuk tujuan kompatibilitas mundur.
Peluncur IronPython (.NET)
Gunakan debugger .NET, yang hanya berfungsi dengan IronPython tetapi memungkinkan untuk melangkah antara proyek bahasa .NET apa pun, termasuk C# dan Visual Basic. Peluncur ini digunakan jika Anda melampirkan ke proses .NET yang sedang berjalan yang menghosting IronPython.
Menentukan perilaku eksekusi
Tabel berikut ini menjelaskan properti yang bisa Anda atur untuk mengonfigurasi perilaku yang sedang berjalan untuk debugger.
Properti
Deskripsi
Jalur Pencarian
Tentukan jalur pencarian file dan folder yang digunakan Visual Studio untuk proyek Anda. Nilai-nilai ini cocok dengan item yang ditampilkan dalam simpul Jalur Pencarian proyek di Penjelajah Solusi. Meskipun Anda dapat menentukan jalur pencarian dalam dialog ini, lebih mudah untuk menggunakan Penjelajah Solusi, di mana Anda dapat menelusuri folder dan secara otomatis mengonversi jalur ke formulir relatif.
Argumen Skrip
Tentukan argumen yang akan ditambahkan ke perintah yang digunakan Visual Studio untuk meluncurkan skrip Anda, dan muncul setelah nama file skrip Anda. Item pertama yang tercantum dalam nilai tersedia untuk skrip Anda sebagai sys.argv[1], yang kedua sebagai sys.argv[2], dan sebagainya.
Argumen Interpreter
Cantumkan argumen untuk ditambahkan ke baris perintah peluncur sebelum nama skrip Anda. Argumen umum adalah -W ... mengontrol peringatan, -O untuk sedikit mengoptimalkan program Anda, dan -u menggunakan IO yang tidak dibuffer. Pengguna IronPython kemungkinan akan menggunakan bidang ini untuk meneruskan opsi -X, seperti -X:Frames atau -X:MTA.
Jalur Interpreter
Identifikasi jalur interpreter untuk mengambil alih jalur yang terkait dengan lingkungan saat ini. Nilai mungkin berguna untuk meluncurkan skrip Anda dengan penerjemah nonstandar.
Variabel Lingkungan
Gunakan properti ini untuk menambahkan entri formulir <NAME>=\<VALUE>. Visual Studio menerapkan nilai properti ini terakhir, di atas variabel lingkungan global yang ada, dan setelah PYTHONPATH diatur sesuai dengan pengaturan Jalur Pencarian. Akibatnya, pengaturan ini dapat digunakan untuk mengambil alih salah satu variabel lain secara manual.
Bekerja dengan jendela interaktif
Ada dua jendela interaktif yang dapat Anda gunakan selama sesi penelusuran kesalahan: jendela Langsung Visual Studio standar dan jendela Interaktif Debug Python.
Buka jendela Langsung
Anda dapat menggunakan jendela Visual Studio Immediate standar untuk mengevaluasi ekspresi Python dengan cepat dan memeriksa atau menetapkan variabel dalam program yang sedang berjalan. Untuk informasi selengkapnya, lihat Jendela langsung.
Untuk membuka jendela Segera, pilih Debug>Windows>Segera. Anda juga dapat menggunakan pintasan keyboard Ctrl+Alt+I.
Buka jendela Debug Interaktif
Jendela Interaktif Debug Python menawarkan lingkungan yang kaya dengan pengalaman REPL Interaktif lengkap yang tersedia saat penelusuran kesalahan, termasuk menulis dan menjalankan kode. Jendela ini secara otomatis terhubung ke proses apa pun yang dimulai di debugger dengan menggunakan peluncur Python Standar, termasuk proses yang dilampirkan melalui Debug>Lampirkan ke Proses. Namun, jendela ini tidak tersedia saat menggunakan debugging C/C++ mode campuran.
Untuk menggunakan jendela Debug Interaktif, pilih Debug>Windows>Python Debug Interactive (Shift+Alt+I).
Jendela Debug Interactive mendukung meta-command khusus selain perintah REPL standar, seperti yang dijelaskan dalam tabel berikut:
Perintah
Deskripsi
$continue, , $cont$c
Mulai jalankan program dari pernyataan saat ini.
$down, $d
Turunkan bingkai satu tingkat untuk bingkai saat ini dalam pelacakan tumpukan.
$frame
Tampilkan ID bingkai saat ini.
$frame
Alihkan bingkai saat ini ke ID bingkai yang ditentukan. - Memerlukan <argumen ID> bingkai.
$load
Muat perintah dari file dan jalankan hingga selesai.
$proc
Tampilkan ID proses saat ini.
$proc
Alihkan proses saat ini ke ID proses yang ditentukan. - Memerlukan <argumen ID> proses.
$procs
Cantumkan proses yang saat ini sedang di-debug.
$stepin, , $step$s
Masuk ke panggilan fungsi berikutnya, jika memungkinkan.
$stepout, , $return$r
Keluar dari fungsi saat ini.
$stepover, , $until$unt
Langkah di atas panggilan fungsi berikutnya.
$thread
Tampilkan ID utas saat ini.
$thread
Alihkan utas saat ini ke ID utas yang ditentukan. - Memerlukan argumen ID utas<.>
$threads
Mencantumkan utas yang saat ini sedang di-debug.
$up, $u
Naikkan bingkai satu tingkat untuk bingkai saat ini dalam pelacakan tumpukan.
$where, , $w$bt
Cantumkan bingkai untuk utas saat ini.
Jendela debugger standar seperti Proses, Utas, dan Tumpukan Panggilan tidak disinkronkan dengan jendela Debug Interactive. Jika Anda mengubah proses aktif, utas, atau bingkai di jendela Debug Interaktif , jendela debugger lainnya tidak terpengaruh. Demikian pula, mengubah proses aktif, utas, atau bingkai di jendela debugger lainnya tidak memengaruhi jendela Debug Interactive.
Menggunakan debugger lama
Bergantung pada konfigurasi lingkungan, Anda mungkin perlu menggunakan debugger warisan:
Visual Studio 2017 versi 15.7 dan yang lebih lama dengan Python 2.6, 3.1 hingga 3.4, atau IronPython
Visual Studio 2019 versi 16.5 dan yang lebih baru dengan Python 2.6, 3.1 hingga 3.4, atau IronPython
ptvsd 3.x dan versi 4.x awal
Debugger warisan adalah default di Visual Studio 2017 versi 15.7 dan yang lebih lama.
Untuk menggunakan debugger warisan, pilih Opsi Alat>, perluas opsi Debugging Python>, dan pilih opsi Gunakan debugger warisan.
Mendukung versi Visual Studio atau Python yang lebih lama
Visual Studio 2017 versi 15.8 dan yang lebih baru menggunakan debugger berdasarkan ptvsd versi 4.1 dan yang lebih baru. Visual Studio 2019 versi 16.5 dan yang lebih baru menggunakan debugger berdasarkan debugpy. Kedua versi debugger ini kompatibel dengan Python 2.7 atau Python 3.5 dan yang lebih baru.
Jika Anda menjalankan salah satu versi Visual Studio ini, tetapi Anda menggunakan Python 2.6, 3.1 hingga 3.4, atau IronPython, Visual Studio menampilkan kesalahan, Debugger tidak mendukung lingkungan Python ini:
Saat Visual Studio melaporkan kesalahan lingkungan ini, Anda harus menggunakan debugger warisan.
Mendukung versi ptvsd yang lebih lama
Jika Anda menggunakan versi ptvsd yang lebih lama di lingkungan saat ini (seperti versi 4.0.x sebelumnya, atau versi 3.x yang diperlukan untuk penelusuran kesalahan jarak jauh), Visual Studio mungkin menampilkan kesalahan atau peringatan.
Jika lingkungan Anda menggunakan ptvsd 3.x, Visual Studio menampilkan kesalahan, paket Debugger tidak dapat dimuat:
Peringatan, paket Debugger kedaluarsa, muncul saat Anda menggunakan ptvsd versi 4.x sebelumnya:
Saat Visual Studio melaporkan kesalahan lingkungan ini, Anda harus menggunakan debugger warisan.
Penting
Meskipun Anda mungkin memilih untuk mengabaikan peringatan untuk beberapa versi ptvsd, Visual Studio mungkin tidak berfungsi dengan benar.
Mengelola penginstalan ptvsd Anda
Ikuti langkah-langkah berikut untuk mengelola penginstalan ptvsd Anda:
Di jendela Lingkungan Python, buka tab Paket .
Masukkan ptvsd di kotak pencarian dan periksa versi ptvsd yang diinstal:
Jika versinya lebih rendah dari 4.1.1a9 (versi yang dibundel dengan Visual Studio), pilih X di sebelah kanan paket untuk menghapus instalan versi yang lebih lama. Visual Studio kemudian menggunakan versi bundelnya. (Anda juga dapat menghapus instalan dari PowerShell dengan menggunakan pip uninstall ptvsd perintah .)
Atau, Anda dapat memperbarui paket ptvsd ke versi terbarunya dengan mengikuti instruksi di bagian Memecahkan masalah skenario debug.
Memecahkan masalah skenario debug
Skenario berikut menjelaskan opsi pemecahan masalah lainnya untuk konfigurasi penelusuran kesalahan Anda.
Meningkatkan ptvsd untuk Visual Studio 2019
Jika Anda mengalami masalah dengan debugger di Visual Studio 2019 versi 16.4 dan yang lebih lama, pertama-tama tingkatkan versi debugger Anda sebagai berikut:
Di jendela Lingkungan Python, buka tab Paket .
Masukkan ptvsd --upgrade di kotak pencarian, lalu pilih Jalankan perintah: pip install ptvsd --upgrade. (Anda juga dapat menggunakan perintah yang sama dari PowerShell.)
Jika masalah berlanjut, ajukan masalah pada repositori GitHub PTVS.
Catatan
Untuk Visual Studio 2019 versi 16.5 dan yang lebih baru, debugpy adalah bagian dari beban kerja Python Visual Studio dan diperbarui bersama dengan Visual Studio.
Mengaktifkan pengelogan debugger
Dalam rangka menyelidiki masalah debugger, Microsoft mungkin meminta Anda untuk mengaktifkan dan mengumpulkan log debugger untuk membantu dalam diagnosis.
Langkah-langkah berikut mengaktifkan penelusuran kesalahan dalam sesi Visual Studio saat ini:
Buka jendela perintah di Visual Studio dengan memilih Tampilkan>Jendela Perintah Windows>Lainnya.
Masukkan perintah berikut:
DebugAdapterHost.Logging /On /OutputWindow
Mulai penelusuran kesalahan dan lakukan langkah-langkah yang diperlukan untuk mereproduksi masalah Anda. Selama waktu ini, log debug muncul di jendela Output di bawah Log Host Adaptor Debug. Anda kemudian dapat menyalin log dari jendela tersebut dan menempelkan ke masalah GitHub, email, dan sebagainya.
Jika Visual Studio berhenti merespons atau Anda tidak dapat mengakses jendela Output, hidupkan ulang Visual Studio, buka jendela perintah, dan masukkan perintah berikut:
DebugAdapterHost.Logging /On
Mulai debugging dan reproduksi masalah Anda lagi. Log debugger terletak di %temp%\DebugAdapterHostLog.txt.
Mempelajari cara melakukan debug aplikasi .NET Anda secara efisien dengan menggunakan Visual Studio Code untuk memperbaiki bug Anda dengan cepat. Gunakan debugger interaktif dalam Visual Studio untuk menganalisis dan memperbaiki aplikasi C# Anda.