Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu makalede, Uzak Linux bilgisayarlarda Python kodunda hata ayıklamayı desteklemek için Visual Studio yüklemenizi yapılandırmayı öğreneceksiniz. Bu kılavuz, Visual Studio 2019 sürüm 16.6'ya dayanır.
Visual Studio, Bir Windows bilgisayarda Python uygulamalarını yerel olarak ve uzaktan başlatabilir ve hatalarını ayıklayabilir. Visual Studio, hata ayıklama kitaplığınıkullanarak CPython dışında farklı bir işletim sisteminde, cihazda veya Python uygulamasında uzaktan hata ayıklamayı da destekler.
Visual Studio 2019 sürüm 16.4 ve öncesi, ptvsd kitaplığınıkullanır. Visual Studio 2019 sürüm 16.5 ve sonraki sürümlerinde hata ayıklama kitaplığı ptvsd'nin yerini alır. Debugpy kullandığınızda, hata ayıklanan Python kodu, Visual Studio'nun bağlanabileceği bir hata ayıklama sunucusunu barındırır. Bu barındırma, sunucuyu içeri aktarmak ve etkinleştirmek için kodunuzda küçük bir değişiklik yapılmasını gerektirir. TCP bağlantılarına izin vermek için uzak bilgisayardaki ağ veya güvenlik duvarı yapılandırmalarını da ayarlamanız gerekebilir.
Önkoşullar
Python iş yükleri desteğiyle yüklenen Visual Studio. Daha fazla bilgi için bkz. Visual Studio'de Python desteği yükleme.
MacOS veya Linux gibi bir işletim sisteminde Python çalıştıran uzak bilgisayar.
Uzak bilgisayarın güvenlik duvarında 5678 numaralı bağlantı noktası (gelen) açılır ve bu, uzaktan hata ayıklama için varsayılan değerdir.
Linux bilgisayar ayarlama
Azure 'da kolayca bir Linux sanal makinesi oluşturabilir ve Windows'tan Uzak Masaüstü kullanarak bu makineye erişebilirsiniz. Python varsayılan olarak yüklendiğinden sanal makine için Ubuntu kullanışlıdır. Farklı bir yapılandırmanız varsa, Python yorumlayıcılarını yüklemek için 'a ve diğer Python indirme konumlarını görmek için'e bkz.
Güvenlik duvarını yapılandırma
Uzaktan hata ayıklamayı desteklemek için uzak bilgisayarın güvenlik duvarında 5678 numaralı gelen bağlantı noktasının açık olması gerekir.
Azure sanal makinesi için güvenlik duvarı kuralı oluşturma hakkında ayrıntılı bilgi için aşağıdaki makalelere bakın:
- Azure portalını kullanarak ağ güvenlik grubuyla ağ trafiğini filtreleme
- Azure portalını kullanarak ağ trafiğini yönlendirme tablosuyla yönlendirme
- Azure portalını kullanarak Azure Güvenlik Duvarı'nı dağıtma ve yapılandırma
Hata ayıklama için betiği hazırlayın
Linux'ta Python kodunuzda hata ayıklamaya yönelik bir betik hazırlamak için bu adımları izleyin.
Uzak bilgisayarda, aşağıdaki kodla guessing-game.py adlı bir Python dosyası oluşturun:
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))pip3 install debugpykomutunu kullanarakdebugpypaketini ortamınıza yükleyin.Not
Sorun giderme için ihtiyacınız olması durumunda yüklü olan hata ayıklama sürümünü kaydetmek iyi bir fikirdir. hata ayıklama listesi kullanılabilir sürümleri de gösterir.
guessing-game.py dosyasının üst kısmına aşağıdaki kodu diğer kodlardan önce ekleyerek uzaktan hata ayıklamayı etkinleştirin. (Katı bir gereksinim olmasa da,
listenişlevi çağrılmadan önce oluşturulan arka plan iş parçacıklarında hata ayıklamak mümkün değildir.)import debugpy debugpy.listen(('0.0.0.0', 5678))Dosyayı kaydedin ve programı çalıştırın:
python3 guessing-game.pylistenişlevine yapılan çağrı arka planda çalışır ve programla etkileşim kurarken gelen bağlantıları bekler. İsterseniz, hata ayıklayıcısı eklenene kadar programı engellemek içinlistenişlevini çağırdıktan sonrawait_for_clientişlevini çağırabilirsiniz.
Bahşiş
debugpy, listen ve wait_for_client işlevlerine ek olarak breakpointbir yardımcı işlevi de sağlar. Bu işlev, hata ayıklayıcı bağlıysa programatik bir kesme noktası işlevi görür. Başka bir işlev olan is_client_connected1, hata ayıklayıcı eklendiğinde True döndürür. Diğer debugpy işlevleri çağırmadan önce bu sonucu denetlemeniz gerekmez.
Python Araçları'ndan uzaktan ekleme
Aşağıdaki adımlarda, uzak işlemi durdurmak için bir kesme noktasının nasıl ayarlanacağı gösterilmektedir.
Yerel bilgisayarda uzak dosyanın bir kopyasını oluşturun ve Visual Studio'da açın. Dosyanın nerede bulunduğu önemli değildir, ancak adı uzak bilgisayardaki betiğin adıyla eşleşmelidir.
(İsteğe bağlı) Yerel bilgisayarınızda hata ayıklama için IntelliSense'i kullanmak için hata ayıklama paketini Python ortamınıza yükleyin.
Bağlanılacak İşlemiçin Hata Ayıklamayı>seçin.
İşleme Ekle iletişim kutusunda, Bağlantı Türü 'nü Python uzak (debugpy)olarak ayarlayın.
Bağlantı Hedefi alanına
tcp://<ip_address>:5678komutunu girin.-
tcp://bağlantı türünü İletim Denetimi Protokolü (TCP) olarak belirtir. -
<ip_address>, açık bir adres veya myvm.cloudapp.netgibi bir ad olabilecek uzak bilgisayarın IP adresidir. -
:5678, uzaktan hata ayıklama bağlantı noktası numarasıdır.
-
Bu bilgisayardaki kullanılabilir hata ayıklama işlemlerinin listesini doldurmak için Enter seçin:
Bu listeyi doldurduktan sonra uzak bilgisayarda başka bir program başlatırsanız, Yenile düğmesini seçmek için'e basın.
Hata ayıklamak için işlemi seçin ve Ekleseçin veya işleme çift tıklayın.
Visual Studio, betik uzak bilgisayarda çalışmaya devam ederken hata ayıklama moduna geçer ve olağan tüm hata ayıklama yeteneklerini sağlar.
if guess < number:satırında bir kesme noktası ayarlayabilir, ardından uzak bilgisayara geçip başka bir tahmin girebilirsiniz. Yerel bilgisayarınızdaki Visual Studio kesme noktasında durur, yerel değişkenleri gösterir ve bu şekilde devam eder:Hata ayıklamayı durdurduğunuzda Visual Studio programdan ayrılır. Program uzak bilgisayarda çalışmaya devam eder. debugpy ayrıca hata ayıklayıcıların bağlanmasını dinlemeye devam eder, böylece istediğiniz zaman işleme yeniden bağlanabilirsiniz.
Bağlantı sorunlarını giderme
Bağlantıyla ilgili sorunları gidermeye yardımcı olması için aşağıdaki noktaları gözden geçirin.
Bağlantı Türüiçin Python uzak (debugpy) seçtiğinizden emin olun.
Bağlantı Hedefi'ndeki gizli anahtarı, uzak koddaki gizli anahtarla tam olarak eşleştiğinden emin olun.
Bağlantı Hedefi IP adresinin uzak bilgisayarın ip adresiyle eşleşdiğini onaylayın.
Uzak bilgisayardaki uzaktan hata ayıklama bağlantı noktasının açık olduğunu ve bağlantı hedefinin
:5678gibi bağlantı noktası son ekini içerdiğini doğrulayın.Farklı bir bağlantı noktası kullanmak için,
listenişlevi çağrısındadebugpy.listen((host, port))gibi bağlantı noktası numarasını belirtin. Bu durumda, güvenlik duvarında belirli bir bağlantı noktasını açtığınızdan emin olun.Uzak bilgisayarda yüklü hata ayıklama sürümünün (
pip3 listkomutu tarafından döndürülen) Visual Studio Python Araçları (PTVS) sürümüyle eşleşip eşleşmediği onaylayın.Aşağıdaki tabloda geçerli sürüm çiftleri listelemektedir. Gerekirse, uzak bilgisayardaki debugpy sürümünü güncelleştirin.
Visual Studio Python Araçları debugpy 2019 16.6 1.0.0b5 1.0.0b5 2019 16.5 1.0.0b1 1.0.0b1
Not
Visual Studio 2019 sürüm 16.0-16.4 ptvsd kullandı, debugpy değil. Bu sürümler için bu kılavuzdaki işlem benzerdir, ancak işlev adları farklıdır. Visual Studio 2019 sürüm 16.5 debugpy kullanır, ancak işlev adları ptvsd'dekilerle aynıdır.
listenyerine enable_attachkullanırsınız.
wait_for_clientyerine wait_for_attachkullanırsınız.
breakpointyerine break_into_debuggerkullanırsınız.
Eski hata ayıklama için ptvsd 3.x kullanma
ptvsd 3.x eski hata ayıklayıcısı, Visual Studio 2017 sürüm 15.7 ve önceki sürümlerde varsayılandır.
Visual Studio yapılandırmanıza bağlı olarak, uzaktan hata ayıklama için ptvsd 3.x kullanmanız gerekebilir:
- Python 2.6, 3.1 - 3.4 veya IronPython ile Visual Studio 2017 sürüm 15.7 ve öncesi
- Python 2.6, 3.1 - 3.4 veya IronPython ile Visual Studio 2019 sürüm 16.5 ve üzeri
- 4.x'in ilk sürümleri
Yapılandırmanız daha eski bir sürüm senaryosu uyguluyorsa, Visual Studio hatasını gösterir Hata Ayıklayıcısı bu Python ortamınıdesteklemez.
Uzaktan hata ayıklamayı ayarlama
ptvsd 3.x ile uzaktan hata ayıklamaya hazırlanmak için aşağıdaki adımları tamamlayın:
Çalışan betiğin erişimini kısıtlamak için kullanılan gizli anahtarınızı ayarlayın.
ptvsd 3.x'te,
enable_attachişlevi ilk bağımsız değişken olarak bir "gizli" geçirmenizi gerektirir.- Uzak hata ayıklayıcıyı bağladığınızda,
enable_attach(secret="<secret>")komutuyla parolayı girin.
enable_attach(secret=None)komutunu kullanarak herkesin bağlanmasına izin verebilirsiniz, ancak bu seçenek önerilmez.- Uzak hata ayıklayıcıyı bağladığınızda,
bağlantı hedefi URL'nizi
tcp://<secret>@<ip_address>:5678biçiminde oluşturun.-
tcp://bağlantı türünü TCP olarak belirtir. -
<secret>, Python kodundaenable_attachişleviyle geçirilen dizedir. -
<ip_address>, açık bir adres veya myvm.cloudapp.netgibi bir ad olabilecek uzak bilgisayarın IP adresidir. -
:5678, uzaktan hata ayıklama bağlantı noktası numarasıdır.
-
TCPS protokolü ile güvenli bağlantı
Varsayılan olarak, ptvsd 3.x uzaktan hata ayıklama sunucusuna bağlantı yalnızca gizli anahtar ile korunur ve tüm veriler şifrelenmemiş olarak aktarılır. Daha güvenli bir bağlantı için ptvsd 3.x, TCP protokolünün güvenli biçimini kullanarak SSL'yi destekler veya TCPS .
ptvsd 3.x'i TCPS protokolüyle çalışacak şekilde yapılandırmak için aşağıdaki adımları kullanın:
Uzak bilgisayarda
opensslkomutunu kullanarak anahtar ve otomatik olarak imzalanan sertifika için ayrı dosyalar oluşturun:openssl req -new -x509 -days 365 -nodes -out cert.cer -keyout cert.key-
opensslisteminde, Ortak Adıiçin bağlanmak için kullandığınız ana bilgisayar adını veya IP adresini girin.
Daha fazla bilgi için Python
sslmodülü belgelerinde Otomatik olarak imzalanan sertifikalar bölümüne bakın. Python belgelerinde açıklanan komutun yalnızca tek bir birleşik dosya oluşturduğunu unutmayın.-
Kodda, dosya adlarını değerler olarak kullanarak
enable_attachişlevine yapılan çağrıyıcertfilevekeyfilebağımsız değişkenlerini ekleyecek şekilde değiştirin. Bu bağımsız değişkenler, standartssl.wrap_socketPython işleviyle aynı anlama sahiptir.ptvsd.enable_attach(secret='my_secret', certfile='cert.cer', keyfile='cert.key')Yerel bilgisayardaki kod dosyasında da aynı değişikliği yapabilirsiniz. Bu kod aslında çalıştırılmadığı için kesinlikle gerekli değildir.
Hata ayıklamaya hazır olması için uzak bilgisayarda Python programını yeniden başlatın.
Visual Studio ile Windows bilgisayarındaki Güvenilen Kök CA'ya sertifika ekleyerek kanalın güvenliğini sağlayın:
Sertifika dosyasını uzak bilgisayardan yerel bilgisayara kopyalayın.
Denetim Masası açın ve Windows Araçları>bilgisayar sertifikalarını yönetme bölümüne gidin.
certlm [Sertifikalar - yerel bilgisayar] iletişim kutusunda Güvenilen Kök Sertifika Yetkilileri düğümünü genişletin, Sertifikalar'asağ tıklayın ve Tüm Görevler>İçeri Aktarmaseçin.
Uzak bilgisayardan kopyalanan .cer dosyasına gidin ve dosyayı seçin.
İçeri aktarma işlemini tamamlamak için gösterilen iletişim kutusu adımlarını takip edin.
Daha önce Python Araçları'ndan uzaktan eklemebölümünde açıklandığı gibi Visual Studio'da ekleme işlemini yineleyin.
Bu örnekte,
tcps://Bağlantı Hedefi (veya Niteleyici) için protokol olarak tanımlayın.
Bağlantı sorunlarını giderme
Bağlantı girişimi sırasında Visual Studio sorunlarla karşılaşabilir. Aşağıdaki senaryoları gözden geçirin ve gerektiği gibi uygun eylemi gerçekleştirin.
Visual Studio, SSL üzerinden bağlanırken karşılaşılan olası sertifika sorunları hakkında uyarır.
Eylem: İletiyi yoksayıp devam edebilirsiniz.
Dikkat
Unutmayın ki kanal gizlice dinlemeye karşı şifrelenmiş olsa da ara bağlantı saldırılarına açık olabilir.
Visual Studio, uzaktaki sertifikanın güvenilir olmadığını uyarısını görüntüler.
Sorun: Sertifika Güvenilen Kök CA'ya düzgün eklenmemiş.
Eylem: Sertifikayı Windows bilgisayarındaki Güvenilen Kök CA'yaekleme adımlarını yeniden denetleyin ve bağlantıyı yeniden deneyin.
Visual Studio, uzak sertifika adının ana bilgisayar adı ile eşleşmediği uyarısını gösteriyor.
Sorun: Sertifikanın Ortak Ad için doğru ana bilgisayar adı veya IP adresi belirtilmemiş.
Eylem: TCPS ile bağlantının güvenliğini sağlamaiçindeki adımları yeniden denetleyin. Sertifikayı oluştururken doğru Ortak Ad kullandığınızdan emin olun ve bağlantıyı yeniden deneyin.