Tady je seznam otázek, které můžou nastat při ladění živých aplikací Azure pomocí ladicího programu Snapshot Debugger.
Jaké jsou náklady na výkon pořízení snímku?
Když Snapshot Debugger zachytí snímek aplikace, vytvoří fork procesu aplikace a pozastaví rozvětvovanou kopii. Při ladění snímku ladíte proti rozvětvované kopii procesu. Tento proces trvá jenom 10 až 20 milisekund, ale nekopíroval celou haldu aplikace. Místo toho zkopíruje pouze stránkovací tabulku a nastaví stránky pro kopírování při zápisu. Pokud se některé objekty vaší aplikace na haldě změní, zkopírují se příslušné stránky. Proto má každý snímek malé náklady na paměť (v pořadí stovek kilobajtů pro většinu aplikací).
Co se stane, když mám škálovanou službu Azure App Service (více instancí aplikace)?
Pokud máte více instancí aplikace, použijí se na každou instanci snappointy. Snímek se vytvoří pouze první bod snappointu, který se dosáhne zadanými podmínkami. Pokud máte více snímků, pozdější snímky pocházejí ze stejné instance, která vytvořila první snímek. Protokolové body odeslané do výstupního okna budou zobrazovat pouze zprávy z jedné instance, zatímco protokolové body odeslané do protokolů aplikace odesílají zprávy z každé instance.
Jak snapshot Debugger načítá symboly?
Snapshot Debugger vyžaduje, abyste měli odpovídající symboly pro vaši aplikaci buď místní, nebo nasazené ve službě Azure App Service. (Vložené soubory PDB se v současné době nepodporují.) Snapshot Debugger automaticky stáhne symboly z vaší služby Azure App Service. Počínaje sadou Visual Studio 2017 verze 15.2 nasadíte do služby Azure App Service také symboly vaší aplikace.
Funguje snapshot Debugger s buildy vydané verze aplikace?
Ano – Snapshot Debugger je určený pro práci s buildy vydaných verzí. Když je do funkce umístěn snappoint, funkce se znovu zkompiluje zpět do ladicí verze, aby ji bylo možné ladit. Zastavení snapshot Debuggeru vrátí funkce do verze sestavení vydané verze.
Můžou protokolovací body způsobit vedlejší účinky v produkční aplikaci?
Ne – všechny zprávy protokolu, které do aplikace přidáte, se vyhodnocují prakticky. Nemůžou ve vaší aplikaci způsobit žádné vedlejší účinky. Některé nativní vlastnosti však nemusí být přístupné s protokolovými body.
Funguje ladicí program snapshotu, pokud je server zatížený?
Ano, ladění snímků může fungovat pro servery, které jsou zatížené. Snapshot Debugger omezuje snímky a nezachytává snímky v situacích, kdy je na vašem serveru málo volné paměti.
Jak můžu odinstalovat Snapshot Debugger?
Rozšíření webu Snapshot Debugger ve službě App Service můžete odinstalovat pomocí následujících kroků:
- Vypněte službu App Service prostřednictvím Průzkumníka cloudu v sadě Visual Studio nebo webu Azure Portal.
- Přejděte na web Kudu vaší služby App Service (to znamená vašeappservice).scm.azurewebsites.net) a přejděte na rozšíření webu.
- Kliknutím na X v rozšíření webu Snapshot Debugger ho odeberte.
Proč jsou porty otevřené během relace snapshot debuggeru?
Snapshot Debugger potřebuje otevřít sadu portů, aby bylo možné ladit snímky pořízené v Azure, jedná se o stejné porty potřebné pro vzdálené ladění. Seznam portů najdete tady.
Jak zakážem rozšíření vzdáleného ladicího programu?
Pro App Services:
- Zakažte rozšíření vzdáleného ladicího programu prostřednictvím webu Azure Portal pro vaši službu App Service.
- Azure Portal > – Nastavení aplikace v okně >Prostředek služby Application Service
- Přejděte do části Ladění a klikněte na tlačítko Vypnuto pro vzdálené ladění.
Pro AKS:
- Aktualizujte soubor Dockerfile tak, aby se odebraly oddíly odpovídající sadě Visual Studio Snapshot Debugger v imagích Dockeru.
- Znovu sestavte a znovu nasaďte upravenou image Dockeru.
Pro škálovací sady virtuálních počítačů nebo virtuálních počítačů odeberte rozšíření vzdáleného ladicího programu, certifikáty, služby KeyVaults a fondy naT pro příchozí spojení následujícím způsobem:
Odebrání rozšíření vzdáleného ladicího programu
Vzdálený ladicí program pro virtuální počítače a škálovací sady virtuálních počítačů můžete zakázat několika způsoby:
Zakázání vzdáleného ladicího programu prostřednictvím Průzkumníka cloudu
- Cloud Explorer > váš prostředek > virtuálního počítače Zakažte ladění (Zakázání ladění neexistuje pro škálovací sadu virtuálních počítačů v Průzkumníku cloudu).
Zakázání vzdáleného ladicího programu pomocí skriptů a rutin PowerShellu
Pro virtuální počítač:
Remove-AzVMExtension -ResourceGroupName $rgName -VMName $vmName -Name Microsoft.VisualStudio.Azure.RemoteDebug.VSRemoteDebugger
Pro škálovací sady virtuálních počítačů:
$vmss = Get-AzVmss -ResourceGroupName $rgName -VMScaleSetName $vmssName $extension = $vmss.VirtualMachineProfile.ExtensionProfile.Extensions | Where {$_.Name.StartsWith('VsDebuggerService')} | Select -ExpandProperty Name Remove-AzVmssExtension -VirtualMachineScaleSet $vmss -Name $extension
Zakázání vzdáleného ladicího programu prostřednictvím webu Azure Portal
- Rozšíření okna prostředků > škálovací sady virtuálních počítačů na webu Azure Portal >
- Odinstalace rozšíření Microsoft.VisualStudio.Azure.RemoteDebug.VSRemoteDebugger
Poznámka:
Škálovací sady virtuálních počítačů – Portál nepovoluje odebrání portů DebuggerListener. Budete muset použít Azure PowerShell. Podrobnosti najdete níže.
Odebrání certifikátů a služby Azure KeyVault
Při instalaci rozšíření Vzdáleného ladicího programu pro virtuální počítač nebo škálovací sady virtuálních počítačů se vytvoří certifikát klienta klienta i serveru pro ověření klienta sady Visual Studio pomocí prostředků škálovacích sad virtuálních počítačů Nebo virtuálních počítačů Azure.
Klientský certifikát
Tento certifikát je certifikát podepsaný svým držitelem umístěný v Cert:/CurrentUser/My/.
Thumbprint Subject ---------- ------- 1234123412341234123412341234123412341234 CN=ResourceName
Jedním ze způsobů, jak odebrat tento certifikát z počítače, je použití PowerShellu.
$ResourceName = 'ResourceName' # from above Get-ChildItem -Path Cert:\CurrentUser\My | Where-Object {$_.Subject -match $ResourceName} | Remove-Item
Certifikát serveru
- Odpovídající kryptografický otisk certifikátu serveru se nasadí jako tajný klíč do služby Azure KeyVault. Visual Studio se pokusí najít nebo vytvořit službu KeyVault s předponou MSVSAZ* v oblasti odpovídající prostředku škálovacích sad virtuálních počítačů nebo virtuálních počítačů. Všechny prostředky škálovacích sad virtuálních počítačů nebo virtuálních počítačů nasazené do této oblasti proto budou sdílet stejnou službu KeyVault.
- Pokud chcete odstranit tajný klíč kryptografického otisku certifikátu serveru, přejděte na web Azure Portal a vyhledejte keyVault MSVSAZ* ve stejné oblasti, která je hostitelem vašeho prostředku. Odstranění tajného kódu, který by měl být označený
remotedebugcert<<ResourceName>>
- Budete také muset odstranit tajný kód serveru z vašeho prostředku prostřednictvím PowerShellu.
Pro virtuální počítače:
$vm.OSProfile.Secrets[0].VaultCertificates.Clear() Update-AzVM -ResourceGroupName $rgName -VM $vm
Pro škálovací sady virtuálních počítačů:
$vmss.VirtualMachineProfile.OsProfile.Secrets[0].VaultCertificates.Clear() Update-AzVmss -ResourceGroupName $rgName -VMScaleSetName $vmssName -VirtualMachineScaleSet $vmss
Odebrání všech fondů NaT třídy DebuggerListener (pouze škálovací sada virtuálních počítačů)
Vzdálený ladicí program zavádí debuggerListener vázané fondy NAT, které se použijí na nástroj pro vyrovnávání zatížení škálovací sady.
$inboundNatPools = $vmss.VirtualMachineProfile.NetworkProfile.NetworkInterfaceConfigurations.IpConfigurations.LoadBalancerInboundNatPools $inboundNatPools.RemoveAll({ param($pool) $pool.Id.Contains('inboundNatPools/DebuggerListenerNatPool-') }) | Out-Null if ($LoadBalancerName) { $lb = Get-AzLoadBalancer -ResourceGroupName $ResourceGroup -name $LoadBalancerName $lb.FrontendIpConfigurations[0].InboundNatPools.RemoveAll({ param($pool) $pool.Id.Contains('inboundNatPools/DebuggerListenerNatPool-') }) | Out-Null Set-AzLoadBalancer -LoadBalancer $lb }
Jak můžu zakázat Snapshot Debugger?
Pro App Service:
Zakažte snapshot Debugger prostřednictvím webu Azure Portal pro vaši službu App Service.
Azure Portal > – Nastavení aplikace v okně >Prostředek služby Application Service
Na webu Azure Portal odstraňte následující nastavení aplikace a uložte provedené změny.
- INSTRUMENTATIONENGINE_EXTENSION_VERSION
- SNAPSHOTDEBUGGER_EXTENSION_VERSION
Upozorňující
Všechny změny nastavení aplikace zahájí restartování aplikace. Další informace o nastavení aplikace najdete v tématu Konfigurace aplikace App Service na webu Azure Portal.
Pro AKS:
- Aktualizujte soubor Dockerfile tak, aby se odebraly oddíly odpovídající sadě Visual Studio Snapshot Debugger v imagích Dockeru.
- Znovu sestavte a znovu nasaďte upravenou image Dockeru.
Pro škálovací sady virtuálních počítačů nebo virtuálních počítačů:
Snapshot Debugger můžete zakázat několika způsoby:
Cloud Explorer > – virtuální počítač / prostředek > škálovací sady virtuálních počítačů – Zakázání diagnostiky
Azure Portal > – virtuální počítač / okno > prostředků škálovací sady virtuálních počítačů – Rozšíření > Odinstalace rozšíření Microsoft.Insights.VMDiagnosticsSettings
Rutiny PowerShellu z Az PowerShellu
Virtuální počítač:
Remove-AzVMExtension -ResourceGroupName $rgName -VMName $vmName -Name Microsoft.Insights.VMDiagnosticsSettings
Škálovací sady virtuálních počítačů:
$vmss = Get-AzVmss -ResourceGroupName $rgName -VMScaleSetName $vmssName Remove-AzVmssExtension -VirtualMachineScaleSet $vmss -Name Microsoft.Insights.VMDiagnosticsSettings
Viz také
- Ladění v sadě Visual Studio
- Ladění živých aplikací ASP.NET pomocí ladicího programu Snapshot
- Ladění živého ASP.NET virtuálních počítačů Azure\Škálovací sady virtuálních počítačů pomocí ladicího programu snímků
- Ladění živého ASP.NET Azure Kubernetes pomocí ladicího programu snapshot
- Řešení potíží a známé problémy při ladění snímků