Aracılığıyla paylaş


Visual Studio'da anlık görüntü hata ayıklama sorunlarını 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 Geliştirici Topluluğu sorunu arayın veya Visual Studio'daGeri Bildirim> Gönder Sorun Bildirin'i seçerek > yenibir 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 yapılan REST çağrısının geçersiz bir kimlik bilgisi kullandığını gösterir.

Şu adımları izleyin:

  • 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ıklamaAnlık Görüntü Hata Ayıklayıcısı> Ekle... iletişim kutusunda kullanılabilir olup olmadığını denetlemektir.>Azure Kaynağı>Var olanı veya Bulut Gezgini'nde öğesini seçin.
  • Bu hata devam ederse, bu makalenin başında açıklanan geri bildirim kanallarından birini kullanın.

App Service kimlik doğrulama/yetkilendirmeyi (EasyAuth) etkinleştirdiyseniz, çağrı yığını hata iletisinde LaunchAgentAsync ile 401 hatasıyla karşılaşabilirsiniz. İsteğin kimliği doğrulanmadığında gerçekleştirecek eylemin Azure portal Anonim isteklere izin ver (eylem yok) olarak ayarlandığından emin olun ve D:\Home\sites\wwwroot içinde aşağıdaki içeriği içeren 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 ve bu da 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ı izleyin:

  • Visual Studio hesabınızın kaynak için gerekli Role-Based Access Control (RBAC) izinlerine sahip geçerli bir Azure aboneliğine sahip olduğunu doğrulayın. AppService için uygulamanızı barındırma planı App Service 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 bir 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ı izleyin:

  • 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 kodunu 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ı izleyin:

  • 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 kuralını 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ı izleyin:

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

(500) İç Sunucu Hatası

500 - İç Sunucu Hatası 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ı izleyin:

  • 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ızın olduğu 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ı izleyin:

  • Uygulamanızı derlemek ve dağıtmak için kaynak kodun 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 simgeleri otomatik olarak indirmeye ve kullanmaya çalışır.

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ı izleyin:

  • 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 bulunan semboller 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 birlikte yayımlar. Sembol önbelleği dizininin ayarlanması, Visual Studio'nın bu simgeleri kullanmasına olanak tanır.

    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ı izleyin:

  • 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ümler için uygulamanızın desteklendiğinden emin olun:

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

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

Kısıtlanmış tutturma noktasını gösteren ekran görüntüsü.

Şu adımları izleyin:

  • Anlık görüntüler çok az bellek alır ancak işleme ücreti alır. Snapshot Debugger sunucunuzun ağır 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 hatalar veriyor (Visual Studio 2019 veya sonraki sürümler)

Visual Studio 2019, Azure App Service 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 App Service 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 App Service 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 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ı izleyin:

"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. BU komutları VS için Geliştirici komut isteminde ç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 ile ilgili sorun 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çenekleri>Anlık Görüntü Hata Ayıklayıcısı>Aracı günlüğünü etkinleştir'e gidin. Oturum başlatmada 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'nizin 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 olarakD:\Home\LogFiles\eventlog.xmlgö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 karşı birden çok Visual Studio istemcisiyle anlık görüntü hata ayıklaması şu anda desteklenmemektedir.
  • Roslyn IL iyileştirmeleri ASP.NET Core projelerde tam olarak desteklenmez. Bazı ASP.NET Core projelerinde 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 projelerin koşullu deyimlerinde veya günlük noktalarında değerlendirilemez.
  • Anlık görüntü hata ayıklama, Yerel Önbelleğe Alma'nın açık olduğu App Services'te ç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 sitenize uygun bir zaman kalmadığından emin olmak için bu işlemi öneririz.

  • App Service içinde bir Dağıtım Yuvası oluşturun ve sitenizi Yuvaya dağıtın.
  • Yuvayı Visual Studio'daki Bulut Gezgini'nden veya Azure portal'dan ü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 (App Service Dikey Pencere > Geliştirme Araçları > Uzantıları > Güncelleştirmesi) yükseltin.
  • Yuva sitesini başlatın. Yeniden ısıtmak için siteyi ziyaret etmeniz önerilir.
  • Yuvayı üretimle değiştirin.

Başvurular