Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Dalam artikel ini, Anda menjelajahi cara mengonfigurasi penginstalan Visual Studio untuk mendukung penelusuran kesalahan kode Python di komputer Linux jarak jauh. Panduan ini didasarkan pada Visual Studio 2019 versi 16.6.
Visual Studio dapat meluncurkan dan men-debug aplikasi Python secara lokal dan jarak jauh di komputer Windows. Visual Studio juga mendukung penelusuran kesalahan dari jarak jauh pada sistem operasi, perangkat, atau implementasi Python yang berbeda selain CPython dengan menggunakan pustaka debugpy .
Visual Studio 2019 versi 16.4 dan versi sebelumnya menggunakan pustaka ptvsd . Di Visual Studio 2019 versi 16.5 dan yang lebih baru, pustaka debugpy menggantikan ptvsd. Saat Anda menggunakan debugpy, kode Python yang sedang di-debug akan menghosting server debug yang dapat dihubungkan oleh Visual Studio. Hosting ini memerlukan modifikasi kecil pada kode Anda untuk mengimpor dan mengaktifkan server. Anda mungkin juga perlu menyesuaikan konfigurasi jaringan atau firewall pada komputer jarak jauh untuk mengizinkan koneksi TCP.
Prasyarat
Visual Studio diinstal dengan dukungan untuk beban kerja Python. Untuk informasi selengkapnya, lihat Menginstal dukungan Python di Visual Studio.
Komputer jarak jauh yang menjalankan Python pada sistem operasi seperti macOS atau Linux.
Port masuk 5678 terbuka pada firewall komputer jarak jauh, yang merupakan default untuk debugging jarak jauh.
Menyiapkan komputer Linux
Anda dapat dengan mudah membuat komputer virtual Linux di Azure dan mengaksesnya dengan menggunakan Desktop Jauh dari Windows. Ubuntu untuk komputer virtual nyaman karena Python diinstal secara default. Jika Anda memiliki konfigurasi yang berbeda, lihat Menginstal interpreter Python untuk lokasi unduhan Python lainnya.
Konfigurasi firewall
Port masuk 5678 harus terbuka pada firewall komputer jarak jauh untuk mendukung debugging jarak jauh.
Untuk detail tentang cara membuat aturan firewall untuk komputer virtual Azure, lihat artikel berikut ini:
- Memfilter lalu lintas jaringan dengan grup keamanan jaringan dengan menggunakan portal Microsoft Azure
- Merutekan lalu lintas jaringan dengan tabel rute menggunakan portal Microsoft Azure
- Menyebarkan dan mengonfigurasi Azure Firewall menggunakan portal Microsoft Azure
Menyiapkan skrip untuk penelusuran kesalahan
Ikuti langkah-langkah ini untuk menyiapkan skrip untuk men-debug kode Python Anda di Linux.
Di komputer jarak jauh, buat file Python bernama guessing-game.py dengan kode berikut:
import random guesses_made = 0 name = input('Hello! What is your name?\n') number = random.randint(1, 20) print('Well, {0}, I am thinking of a number between 1 and 20.'.format(name)) while guesses_made < 6: guess = int(input('Take a guess: ')) guesses_made += 1 if guess < number: print('Your guess is too low.') if guess > number: print('Your guess is too high.') if guess == number: break if guess == number: print('Good job, {0}! You guessed my number in {1} guesses!'.format(name, guesses_made)) else: print('Nope. The number I was thinking of was {0}'.format(number))Instal paket
debugpyke lingkungan Anda dengan menggunakan perintahpip3 install debugpy.Nota
Sebaiknya rekam versi debugpy yang diinstal jika Anda membutuhkannya untuk pemecahan masalah. Daftar debugpy juga menampilkan versi yang tersedia.
Aktifkan penelusuran kesalahan jarak jauh dengan menambahkan kode berikut di bagian atas file guessing-game.py sebelum kode lain. (Meskipun bukan persyaratan yang ketat, tidak mungkin untuk men-debug utas latar belakang apa pun yang muncul sebelum fungsi
listendipanggil.)import debugpy debugpy.listen(('0.0.0.0', 5678))Simpan file dan jalankan program:
python3 guessing-game.pyPanggilan ke fungsi
listenberjalan di latar belakang dan menunggu koneksi masuk saat Anda berinteraksi dengan program. Jika diinginkan, Anda dapat memanggil fungsiwait_for_clientsetelah memanggil fungsilistenuntuk memblokir program hingga debugger terpasang.
Tips
Selain fungsi listen dan wait_for_client, debugpy juga menyediakan fungsi pembantu breakpoint. Fungsi ini berperan sebagai titik henti terprogram jika debugger terpasang. Fungsi lain, is_client_connected1, mengembalikan True jika debugger dilampirkan. Anda tidak perlu memeriksa hasil ini sebelum memanggil fungsi debugpy lainnya.
Lampirkan dari jarak jauh dari Python Tools
Langkah-langkah berikut menunjukkan cara mengatur titik henti untuk menghentikan proses jarak jauh.
Buat salinan file jarak jauh di komputer lokal dan buka di Visual Studio. Tidak masalah di mana file berada, tetapi namanya harus cocok dengan nama skrip di komputer jarak jauh.
(Opsional) Agar IntelliSense untuk debugpy muncul di komputer lokal Anda, instal paket debugpy pada lingkungan Python Anda.
Pilih Debug>Lampirkan ke Proses.
Dalam dialog Lampirkan ke Proses, atur Jenis Koneksi ke Python remote (debugpy).
Di bidang Target Koneksi, masukkan perintah
tcp://<ip_address>:5678.-
tcp://menentukan jenis koneksi sebagai Protokol Kontrol Transmisi (TCP). -
<ip_address>adalah alamat IP komputer jarak jauh, yang dapat menjadi alamat eksplisit atau nama seperti myvm.cloudapp.net. -
:5678adalah nomor port debugging jarak jauh.
-
Pilih Masukkan untuk mengisi daftar proses debugpy yang tersedia di komputer tersebut:
Jika Anda kebetulan memulai program lain pada komputer jarak jauh setelah mengisi daftar ini, pilih tombol Refresh.
Pilih proses untuk men-debug dan pilih Lampirkan, atau klik dua kali proses.
Visual Studio beralih ke mode penelusuran kesalahan saat skrip terus berjalan di komputer jarak jauh, menyediakan semua kemampuan penelusuran kesalahan yang biasa.
Anda dapat mengatur titik henti pada baris
if guess < number:, lalu beralih ke komputer jarak jauh dan memasukkan tebakan lain. Visual Studio di komputer lokal Anda berhenti di titik henti, menampilkan variabel lokal, dan sebagainya:Saat Anda berhenti men-debug, Visual Studio memutuskan sambungan dari program. Program terus berjalan pada komputer jarak jauh. debugpy juga terus siap menerima debugger yang dihubungkan, sehingga Anda dapat menghubungkan kembali ke proses tersebut kapan saja.
Memecahkan masalah koneksi
Tinjau poin-poin berikut untuk membantu memecahkan masalah dengan koneksi.
Pastikan Anda memilih Python remote (debugpy) untuk Tipe Koneksi.
Konfirmasikan rahasia di Target Koneksi sama persis dengan rahasia dalam kode jarak jauh.
Pastikan alamat IP di Target Koneksi sesuai dengan komputer jarak jauh.
Verifikasi bahwa port debugging jarak jauh terbuka pada komputer jarak jauh, dan target koneksi menyertakan sufiks port, seperti
:5678.Untuk menggunakan port yang berbeda, tentukan nomor port dalam panggilan ke fungsi
listen, seperti dalamdebugpy.listen((host, port)). Dalam hal ini, pastikan untuk membuka port tertentu di firewall.Konfirmasikan versi debugpy yang diinstal pada komputer jarak jauh (sebagaimana dikembalikan oleh perintah
pip3 list) cocok dengan versi Visual Studio Python Tools (PTVS).Tabel berikut mencantumkan pasangan versi yang valid. Jika perlu, perbarui versi debugpy di komputer jarak jauh.
Visual Studio Alat Python debugpy 2019 16.6 1.0.0b5 1.0.0b5 2019 16.5 1.0.0b1 1.0.0b1
Nota
Visual Studio 2019 versi 16.0-16.4 menggunakan ptvsd, bukan debugpy. Proses dalam panduan ini untuk versi tersebut serupa, tetapi nama fungsinya berbeda. Visual Studio 2019 versi 16.5 menggunakan debugpy, tetapi nama fungsinya sama dengan yang ada di ptvsd. Alih-alih listen, Anda akan menggunakan enable_attach. Alih-alih wait_for_client, Anda akan menggunakan wait_for_attach. Alih-alih breakpoint, Anda akan menggunakan break_into_debugger.
Gunakan ptvsd 3.x untuk penelusuran kesalahan lama
Debugger warisan ptvsd 3.x adalah default di Visual Studio 2017 versi 15.7 dan yang lebih lama.
Bergantung pada konfigurasi Visual Studio, Anda mungkin perlu menggunakan ptvsd 3.x untuk penelusuran kesalahan jarak jauh:
- 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
- Versi 4.x awal
Jika konfigurasi Anda menerapkan skenario versi yang lebih lama, Visual Studio menampilkan kesalahan, Debugger tidak mendukung lingkungan Python ini.
Menyiapkan debugging jarak jauh
Untuk mempersiapkan pemecahan masalah program jarak jauh dengan ptvsd 3.x, selesaikan langkah-langkah berikut:
Siapkan rahasia Anda, yang digunakan untuk membatasi akses ke skrip yang sedang berjalan.
Dalam ptvsd 3.x, fungsi
enable_attachmengharuskan pengiriman "kunci rahasia" sebagai argumen pertama.- Saat Anda melampirkan debugger jarak jauh, masukkan rahasia dengan perintah
enable_attach(secret="<secret>").
Meskipun Anda dapat mengizinkan siapa pun untuk terhubung dengan menggunakan perintah
enable_attach(secret=None), opsi ini tidak disarankan.- Saat Anda melampirkan debugger jarak jauh, masukkan rahasia dengan perintah
Buat URL target koneksi Anda dalam formulir
tcp://<secret>@<ip_address>:5678.-
tcp://menentukan jenis koneksi sebagai TCP. -
<secret>adalah string yang diteruskan dengan fungsienable_attachdalam kode Python. -
<ip_address>adalah alamat IP komputer jarak jauh, yang dapat menjadi alamat eksplisit atau nama seperti myvm.cloudapp.net. -
:5678adalah nomor port debugging jarak jauh.
-
Mengamankan koneksi dengan protokol TCPS
Secara default, koneksi ke server debug jarak jauh ptvsd 3.x hanya dilindungi oleh kata sandi, dan semua data dikirimkan dalam teks biasa. Untuk koneksi yang lebih aman, ptvsd 3.x mendukung SSL dengan menggunakan bentuk aman protokol TCP, atau TCPS.
Gunakan langkah-langkah berikut untuk mengonfigurasi ptvsd 3.x agar berfungsi dengan protokol TCPS:
Di komputer jarak jauh, gunakan perintah
openssluntuk menghasilkan file terpisah untuk kunci dan sertifikat yang ditandatangani sendiri:openssl req -new -x509 -days 365 -nodes -out cert.cer -keyout cert.key- Pada perintah
openssl, masukkan nama host atau alamat IP yang Anda gunakan untuk menyambungkan ke Nama Umum .
Untuk informasi selengkapnya, lihat Sertifikat yang ditandatangani sendiri dalam dokumentasi modul Python
ssl. Perhatikan bahwa perintah yang dijelaskan dalam dokumentasi Python hanya menghasilkan satu file gabungan.- Pada perintah
Dalam kode, ubah panggilan ke fungsi
enable_attachuntuk menyertakan argumencertfiledankeyfiledengan menggunakan nama file sebagai nilai. Argumen ini memiliki arti yang sama seperti untuk fungsi Pythonssl.wrap_socketstandar.ptvsd.enable_attach(secret='my_secret', certfile='cert.cer', keyfile='cert.key')Anda juga dapat membuat perubahan yang sama dalam file kode di komputer lokal. Karena kode ini tidak benar-benar dijalankan, kode ini tidak benar-benar diperlukan.
Mulai ulang program Python di komputer jarak jauh sehingga siap untuk debugging.
Amankan saluran dengan menambahkan sertifikat ke Root CA Tepercaya di komputer Windows dengan Visual Studio.
Salin file sertifikat dari komputer jarak jauh ke komputer lokal.
Buka Panel Kontrol dan buka Windows Tools>Mengelola sertifikat komputer.
Dalam dialog certlm [Sertifikat - komputer lokal], perluas simpul Otoritas Sertifikasi Akar Tepercaya, klik kanan pada Sertifikat, lalu pilih Semua Tugas, dan>Impor.
Telusuri dan pilih file .cer yang disalin dari komputer jarak jauh.
Lanjutkan melalui perintah dialog untuk menyelesaikan proses impor.
Ulangi proses lampiran di Visual Studio, seperti yang dijelaskan sebelumnya di Lampirkan dari jarak jauh dari Python Tools.
Untuk instans ini, tentukan
tcps://sebagai protokol untuk Target Koneksi (atau Pengualifikasi ).
Mengatasi masalah koneksi
Selama upaya koneksi, Visual Studio mungkin mengalami masalah. Tinjau skenario berikut dan ambil tindakan yang sesuai, sesuai kebutuhan.
Visual Studio memperingatkan tentang potensi masalah sertifikat saat menyambungkan melalui SSL.
Tindakan: Anda dapat mengabaikan pesan dan melanjutkan.
Peringatan
Perlu diingat bahwa meskipun saluran masih dienkripsi terhadap penyadapan, saluran tersebut dapat terbuka untuk serangan man-in-the-middle.
Visual Studio menampilkan peringatan sertifikat jarak jauh tidak tepercaya.
Masalah: Sertifikat tidak ditambahkan dengan benar ke CA Root Tepercaya.
Tindakan: Centang kembali langkah-langkah untuk menambahkan sertifikat ke CA Akar Tepercaya di komputer Windows, dan coba koneksi lagi.
Visual Studio menampilkan nama sertifikat jarak jauh tidak cocok dengan nama host peringatan.
Masalah: Nama host atau alamat IP yang tepat belum ditentukan untuk Nama Umum untuk sertifikat.
Tindakan: Centang ulang langkah-langkah di Amankan koneksi dengan TCPS. Pastikan untuk menggunakan Nama Umum yang benar saat Anda membuat sertifikat, dan coba koneksi lagi.