Aracılığıyla paylaş


Visual Studio'da anlık görüntü hata ayıklama için sorun giderme ve bilinen sorunlar

Şunlar için geçerlidir: Visual Studio

Bu makalede, Visual Studio'da Snapshot Debugger ile bir Azure uygulamasında hata ayıklarken karşılaşabileceğiniz yaygın sorunların çözümleri sağlanır.

Bu makalede açıklanan adımlar sorununuzu çözmezse, Visual Studio'da Geri Bildirim>Gönder Sorun Bildir'i seçerek> sorunu Geliştirici Topluluğu arayın veya yeni bir sorun bildirin.

Sorun: "Anlık Görüntü Hata Ayıklayıcısı Ekle" bir HTTP durum kodu hatasıyla karşılaşıyor

Ekleme girişimi sırasında Çıkış penceresinde aşağıdaki hatayı görürseniz, bu aşağıdaki bölümlerde listelenen bilinen bir sorun olabilir. Önerilen çözümleri deneyin ve sorun devam ederse önceki diğer adla iletişime geçin.

[TIMESTAMP] Error --- Unable to Start Snapshot Debugger - Attach Snapshot Debugger failed: System.Net.WebException: The remote server returned an error: (###) XXXXXX

(401) Yetkisiz

Bu hata, Visual Studio tarafından Azure'a verilen REST çağrısının geçersiz bir kimlik bilgisi kullandığını gösterir.

Şu adımları uygulayın:

  • Visual Studio kişiselleştirme hesabınızın, eklediğiniz Azure aboneliği ve kaynağı için izinlere sahip olduğundan emin olun. Bunu belirlemenin hızlı bir yolu, Kaynağın Hata Ayıklama Anlık Görüntü Hata Ayıklayıcısı'ndaki iletişim kutusunda kullanılabilir olup olmadığını denetlemektir...>>Azure Kaynağı>Var olanı veya Bulut Gezgini'nde seçin.
  • Bu hata devam ederse, bu makalenin başında açıklanan geri bildirim kanallarından birini kullanın.

App Service'inizde Kimlik Doğrulaması/Yetkilendirmeyi (EasyAuth) etkinleştirdiyseniz, çağrı yığını hata iletisinde LaunchAgentAsync ile 401 hatasıyla karşılaşabilirsiniz. İstek kimliği doğrulanmadığında gerçekleştirecek Eylem'in Azure portalında Anonim isteklere izin ver (eylem yok) olarak ayarlandığından emin olun ve D:\Home\sites\wwwroot içinde aşağıdaki içeriğe sahip bir authorization.json sağlayın.

{
  "routes": [
    {
      "path_prefix": "/",
      "policies": {
        "unauthenticated_action": "RedirectToLoginPage"
      }
    },
    {
      "http_methods": [ "POST" ],
      "path_prefix": "/41C07CED-2E08-4609-9D9F-882468261608/api/agent",
      "policies": {
        "unauthenticated_action": "AllowAnonymous"
      }
    }
  ]
}

İlk yol, [IdentityProvider] ile oturum açma gibi uygulama etki alanınızın güvenliğini etkili bir şekilde sağlar. İkinci yol SnapshotDebugger AgentLaunch uç noktasını kimlik doğrulaması dışında kullanıma sunar. Bu işlem, SnapshotDebugger tanılama aracısını başlatmanın önceden tanımlanmış eylemini yalnızca SnapshotDebugger önceden yüklenmiş site uzantısı uygulama hizmetiniz için etkinleştirildiğinde gerçekleştirir. authorization.json yapılandırması hakkında daha fazla bilgi için bkz. URL yetkilendirme kuralları.

(403) Yasak

403 - Yasak hatası, iznin reddedildiğini gösterir. Birçok farklı senaryo bu hataya neden olabilir.

Şu adımları uygulayın:

  • Visual Studio hesabınızın kaynak için gerekli Rol Tabanlı Erişim Denetimi (RBAC) izinlerine sahip geçerli bir Azure aboneliğine sahip olduğunu doğrulayın. AppService için uygulamanızı barındıran App Service Planı'nı sorgulama izinlerinizin olup olmadığını denetleyin.
  • İstemci makinenizin zaman damgasının doğru ve güncel olduğunu doğrulayın. İstek zaman damgasının 15 dakikadan uzun süre kapalı olduğu sunucular genellikle bu hatayı üretir.
  • Bu hata devam ederse, bu makalenin başında açıklanan geri bildirim kanallarından birini kullanın.

(404) Bulunamadı

404 - Bulunamadı hatası, web sitesinin sunucuda bulunamadığını gösterir.

Şu adımları uygulayın:

  • Eklediğiniz App Service kaynağında dağıtılan ve çalıştırılan bir web sitenizin olduğunu doğrulayın.
  • Sitenin https://< resource.azurewebsites.net> adresinde kullanılabilir olduğunu doğrulayın
  • düzgün çalışan özel web uygulamanızın https:// resource.azurewebsites.net<> adresinden erişildiğinde 404 durum kodu döndürmediğini doğrulayın.
  • Bu hata devam ederse, bu makalenin başında açıklanan geri bildirim kanallarından birini kullanın.

(406) Kabul Edilemez

406 - Kabul Edilemiyor hatası, sunucunun isteğin Accept üst bilgisinde ayarlanan türe yanıt veremediğini gösterir.

Şu adımları uygulayın:

  • Sitenizin https://< resource.azurewebsites.net> adresinde kullanılabilir olduğunu doğrulayın.
  • Sitenizin yeni örneklere geçirilmemiş olduğunu doğrulayın. Snapshot Debugger, istekleri zaman zaman bu hatayı oluşturabilecek belirli örneklere yönlendirmek için ARRAffinity ifadesini kullanır.
  • Bu hata devam ederse, bu makalenin başında açıklanan geri bildirim kanallarından birini kullanın.

(409) Çakışma

409 - Çakışma hatası, isteğin geçerli sunucu durumuyla çakıştığını gösterir.

Bu, kullanıcı ApplicationInsights'ı etkinleştirmiş bir AppService'e Snapshot Debugger eklemeyi denediğinde oluşan bilinen bir sorundur. ApplicationInsights, AppSettings'i Visual Studio'dan farklı bir büyük/küçük harfle ayarlar ve bu soruna neden olur.

Bu sorunu Visual Studio 2019'da çözdük.

Şu adımları uygulayın:

  • Bu hata devam ederse, bu makalenin başında açıklanan geri bildirim kanallarından birini kullanın.

(500) İç Sunucu Hatası

500 - İç Sunucu Hatası, sitenin devre dışı olduğunu veya sunucunun isteği işleyemediğini gösterir. Snapshot Debugger yalnızca çalışan uygulamalar üzerinde çalışır. Application Insights Anlık Görüntü Hata Ayıklayıcısı özel durumlarda anlık görüntü sağlar ve ihtiyaçlarınız için en iyi araç olabilir.

(502) Hatalı Ağ Geçidi

502 - Hatalı Ağ Geçidi hatası, sunucu tarafı ağ sorununu gösterir ve geçici olabilir.

Şu adımları uygulayın:

  • Snapshot Debugger'a yeniden eklemeden önce birkaç dakika beklemeyi deneyin.
  • Bu hata devam ederse, bu makalenin başında açıklanan geri bildirim kanallarından birini kullanın.

Sorun: Snappoint açık değil

Normal tutturma noktası simgesi yerine tutturma noktanızla birlikte bir uyarı simgesi görürseniz, tutturma noktası açık değildir.

Snappoint'in açılmadığını gösteren ekran görüntüsü.

Şu adımları uygulayın:

  • Uygulamanızı derlemek ve dağıtmak için kaynak kodunun aynı sürümünü kullandığınızdan emin olun.
  • Dağıtımınız için doğru simgeleri yüklediğinizden emin olun.
  • Bunu yapmak için, Snapshot Debugging sırasında Modüller penceresini görüntüleyin ve Sembol Dosyası sütununda hata ayıkladığınız modül için yüklenmiş bir .pdb dosyası olduğunu doğrulayın.
    • Snapshot Debugger dağıtımınız için sembolleri otomatik olarak indirmeyi ve kullanmayı dener.

Sorun: Anlık Görüntü açtığımda simgeler yüklenemiyor

Aşağıdaki pencereyi görürseniz simgeler yüklenmedi.

Simgelerin yüklenmediğini gösteren ekran görüntüsü.

Şu adımları uygulayın:

  • Sayfada Simge Ayarlarını Değiştir... öğesini seçin.

  • Hata Ayıklama > Simgesi ayarlarına bir simge önbellek dizini ekleyin.

  • Simge yolu ayarlandıktan sonra anlık görüntü hata ayıklamasını yeniden başlatın.

    Projenizde kullanılabilen simgeler veya .pdb dosyaları App Service dağıtımınızla eşleşmelidir. Çoğu dağıtım (Visual Studio aracılığıyla dağıtım, Azure Pipelines veya Kudu ile CI/CD vb.) sembol dosyalarınızı App Service'inizde yayımlar. Sembol önbelleği dizininin ayarlanması, Visual Studio'nın bu simgeleri kullanmasını sağlar.

    Simgelerin ayarlarını gösteren ekran görüntüsü.

  • Alternatif olarak, kuruluşunuz bir sembol sunucusu kullanıyorsa veya sembolleri farklı bir yola bırakıyorsa, dağıtımınız için doğru simgeleri yüklemek için sembol ayarlarını kullanın.

Sorun: Bulut Gezgini'nde "Anlık Görüntü Hata Ayıklayıcısı Ekle" seçeneğini göremiyorum

Şu adımları uygulayın:

  • Snapshot Debugger bileşeninin yüklü olduğundan emin olun. Visual Studio Yükleyicisi açın ve Azure iş yükündeki Snapshot Debugger bileşenini denetleyin.

  • Visual Studio 2019 veya sonraki sürümleri için uygulamanızın desteklendiğinden emin olun:

    • Azure Uygulaması Hizmetleri - .NET Framework 4.6.1 veya üzeri üzerinde çalışan uygulamaları ASP.NET.
    • Azure Uygulaması Hizmetleri - Windows'da .NET Core 2.0 veya üzeri üzerinde çalışan ASP.NET Core uygulamaları.
    • Azure Sanal Makineler (ve sanal makine ölçek kümesi) - .NET Framework 4.6.1 veya sonraki sürümlerinde çalışan uygulamaları ASP.NET.
    • Azure Sanal Makineler (ve sanal makine ölçek kümesi) - Windows üzerinde .NET Core 2.0 veya üzeri üzerinde çalışan ASP.NET Core uygulamaları.
    • Azure Kubernetes Services - Debian 9'da .NET Core 2.2 veya üzeri üzerinde çalışan ASP.NET Core uygulamaları.
    • Azure Kubernetes Services - Alpine 3.8 üzerinde .NET Core 2.2 veya üzeri üzerinde çalışan ASP.NET Core uygulamaları.
    • Azure Kubernetes Services - Ubuntu 18.04 üzerinde .NET Core 2.2 veya üzeri üzerinde çalışan ASP.NET Core uygulamaları.

Sorun: Tanılama Araçları'nda yalnızca Kısıtlanmış Anlık Görüntüler görüyorum

Kısıtlanmış snappoint'i gösteren ekran görüntüsü.

Şu adımları uygulayın:

  • Anlık görüntüler çok az bellek alır ancak işleme ücretine sahiptir. Snapshot Debugger sunucunuzun yoğun bellek yükü altında olduğunu algılarsa anlık görüntüler almaz. Snapshot Debugger oturumunu durdurup yeniden deneyerek zaten yakalanan anlık görüntüleri silebilirsiniz.

Sorun: Visual Studio'nun birden çok sürümüyle anlık görüntü hata ayıklaması bana hata veriyor (Visual Studio 2019 veya sonraki sürümler)

Visual Studio 2019, Azure Uygulaması Hizmetinizde Snapshot Debugger site uzantısının daha yeni bir sürümünü gerektirir. Bu sürüm, Visual Studio 2017 tarafından kullanılan Snapshot Debugger site uzantısının eski sürümüyle uyumlu değildir. Visual Studio 2019'da Snapshot Debugger'ı daha önce Visual Studio 2017'deki Snapshot Debugger tarafından hata ayıklanmış bir Azure Uygulaması Hizmetine eklemeye çalışırsanız aşağıdaki hatayı alırsınız:

Uyumsuz Snapshot Debugger site uzantısı Visual Studio 2019'un ekran görüntüsü.

Buna karşılık, Daha önce Visual Studio 2019'da Snapshot Debugger tarafından hata ayıklanmış bir Azure Uygulaması Hizmetine Snapshot Debugger eklemek için Visual Studio 2017 kullanırsanız aşağıdaki hatayı alırsınız:

Uyumsuz Snapshot Debugger site uzantısı Visual Studio 2017'nin ekran görüntüsü.

Bunu düzeltmek için Azure portalında aşağıdaki Uygulama ayarlarını silin ve Snapshot Debugger'ı yeniden ekleyin:

  • INSTRUMENTATIONENGINE_EXTENSION_VERSION
  • SNAPSHOTDEBUGGER_EXTENSION_VERSION

Sorun: Yanlış/eski Azure kaynağına veya depolama hesabına ekliyorum

Şu adımları uygulayın:

"Azure kaynağı" ve "Depolama hesabı" girişleri kaynak adlarını anahtar olarak kullanır, bu nedenle kaynağı farklı aboneliklere geçirme gibi eylemler sorunlara neden olabilir. Listeyi temizlemek için şu adımları izleyin:

  1. VS için Geliştirici komut isteminde bu komutları çalıştırın (yönetici ayrıcalıklarıyla).

    vsregedit remove local HKCU SnapshotDebugger AzureResourcesMRU
    vsregedit remove local HKCU SnapshotDebugger StorageAccountsMRU
    
  2. Web uygulamasıyla ilişkili tüm .suo dosyalarını silin.

Sorun: Anlık Görüntü Hata Ayıklama sorunları yaşıyorum ve daha fazla günlüğe kaydetmeyi etkinleştirmem gerekiyor

Aracı günlüklerini etkinleştirme

Aracı günlüğünü etkinleştirmek ve devre dışı bırakmak için Visual Studio'yu açın ve Araçlar>Seçenekler>Anlık Görüntü Hata Ayıklayıcısı>Aracı günlüğünü etkinleştir'e gidin. Oturum başlatmadaki eski aracı günlüklerini sil de etkinleştirildiyse, her başarılı Visual Studio eklemesi önceki aracı günlüklerini siler.

Aracı günlüklerini aşağıdaki konumlarda bulabilirsiniz:

  • Uygulama Hizmetleri:
    • App Service'inizin Kudu sitesine (yani <uygulama hizmetinize>) gidin.scm.azurewebsites.net) ve Hata Ayıklama Konsolu'na gidin.
    • Aracı günlükleri şu dizinde depolanır: D:\home\LogFiles\SiteExtensions\DiagnosticsAgentLogs\.
  • VM/VMSS:
    • VM'nizde oturum açın, aracı günlükleri şu şekilde depolanır: C:\WindowsAzure\Logs\Plugins\Microsoft.Azure.Diagnostics.IaaSDiagnostics<Version>\SnapshotDebuggerAgent*.txt_
  • AKS
    • Şu dizine gidin: /tmp/diag/AgentLogs/*

Profil Oluşturucu/İzleme günlüklerini etkinleştirme

İzleme günlüklerini aşağıdaki konumlarda bulabilirsiniz:

  • Uygulama Hizmetleri:
    • Hata günlüğü otomatik olarak D:\Home\LogFiles\eventlog.xml'e gönderilir, olaylar veya "Üretim Kesme Noktaları" ile <Provider Name="Instrumentation Engine" /> işaretlenir
  • VM/VMSS:
    • VM'nizde oturum açın ve Olay Görüntüleyicisi açın.
    • Şu görünümü açın: Windows Günlükleri>Uygulaması.
    • Üretim Kesme Noktalarını veya İzleme Altyapısını kullanarak Geçerli Günlüğü Olay Kaynağına göre filtreleyin.
  • AKS
    • /tmp/diag/log.txt 'de izleme altyapısı günlüğü (DockerFile'da ayarlanırMicrosoftInstrumentationEngine_FileLogPath)
    • /tmp/diag/shLog.txt konumunda ProductionBreakpoint günlüğü

Bilinen sorunlar

  • Aynı App Service'e karşı birden çok Visual Studio istemcisiyle anlık görüntü hata ayıklaması şu anda desteklenmemektedir.
  • Roslyn IL iyileştirmeleri ASP.NET Core projelerinde tam olarak desteklenmez. Bazı ASP.NET Core projeleri için bazı değişkenleri göremeyebilir veya bazı değişkenleri koşullu deyimlerde kullanamayabilirsiniz.
  • veya $CALLERgibi $FUNCTION özel değişkenler, ASP.NET Core projeleri için koşullu deyimlerde veya günlük noktalarında değerlendirilemez.
  • Yerel Önbelleğe Alma özelliğinin açık olduğu App Services'te anlık görüntü hata ayıklaması çalışmaz.
  • Anlık görüntü hata ayıklama API Uygulamaları şu anda desteklenmiyor.

Site uzantısı yükseltmesi

Anlık Görüntü Hata Ayıklama ve Application Insights, site işlemine yüklenen ve yükseltme sırasında dosya kilitleme sorunlarına neden olan bir ICorProfiler'a bağlıdır. Üretim sitenizde herhangi bir zaman kalmadığından emin olmak için bu süreci öneririz.

  • App Service'inizde bir Dağıtım Yuvası oluşturun ve sitenizi Yuvaya dağıtın.
  • Yuvayı Visual Studio'daki Bulut Gezgini'nden veya Azure portalından üretimle değiştirin.
  • Yuva sitesini durdurun. Tüm örneklerden site w3wp.exe işlemini sonlandırmak birkaç saniye sürer.
  • Yuva sitesi uzantısını Kudu sitesinden veya Azure portalından (App Service Dikey Pencere > Geliştirme Araçları > Uzantıları > Güncelleştirmesi) yükseltin.
  • Yuva sitesini başlatın. Yeniden ısınmak için siteyi ziyaret etmenizi öneririz.
  • Yuvayı üretimle değiştirin.

Başvurular