Condividi tramite


Eseguire il debug di .NET Core in Linux usando SSH connettendosi a un processo

A partire da Visual Studio 2017, è possibile connettersi a processi .NET Core e .NET 5+ in esecuzione in una distribuzione Linux locale o remota tramite Secure Shell (SSH). Questo articolo descrive come configurare il debug e come eseguire il debug. Per gli scenari di debug con contenitori Docker, vedere Connettersi a un processo in esecuzione in un contenitore Docker e gli articoli sugli strumenti del contenitore. Per eseguire il debug di Linux in WSL 2 da Visual Studio (nessun collegamento a processo), vedere Debug di app .NET Core in WSL 2 con Visual Studio.

Nota

Per il debug di Linux in esecuzione in servizio Azure Kubernetes (AKS), è consigliabile passare a Kubernetes anziché collegarsi al processo.

Prerequisiti

  • Nel server Linux è necessario installare il server SSH, decomprimere e installare con curl o wget. Ad esempio, in Ubuntu è possibile eseguire questa operazione eseguendo:

    sudo apt-get install openssh-server unzip curl
    

    SFTP deve essere abilitato e SSH. La maggior parte delle distribuzioni SSH installa e abilita SFTP per impostazione predefinita, ma questo non è sempre il caso.

  • Nel server Linux installare il runtime .NET in Linux e trovare la pagina corrispondente alla distribuzione Linux, ad esempio Ubuntu. .NET SDK non è obbligatorio.

  • Per istruzioni complete su ASP.NET Core, vedere Host ASP.NET Core in Linux con Nginx e Host ASP.NET Core in Linux con Apache.

Preparare l'applicazione per il debug

Per preparare l'applicazione per il debug:

  • È consigliabile usare una configurazione di debug quando si compila l'applicazione. È molto più difficile eseguire il debug del codice compilato al dettaglio (una configurazione di versione) rispetto al codice compilato dal debug. Se è necessario usare una configurazione release, disabilitare prima Just My Code. Per disabilitare questa impostazione, scegliere Strumenti>Opzioni>debug e quindi deselezionare Abilita Just My Code.

Compilare e distribuire l'applicazione

È possibile usare diversi metodi per distribuire l'app prima del debug. È ad esempio possibile:

  • Copiare le origini nel computer di destinazione e compilare con dotnet build nel computer Linux.

  • Compilare l'app in Windows e quindi trasferire gli artefatti di compilazione nel computer Linux. Gli artefatti di compilazione sono costituiti dall'applicazione stessa, dai PDB portabili, da tutte le librerie di runtime da cui dipende e dal file .deps.json .

Quando l'app viene distribuita, avviare l'applicazione.

Collegare il debugger

Quando l'applicazione è in esecuzione nel computer Linux, è possibile collegare il debugger.

  1. In Visual Studio scegliere Debug>Connetti a processo....

  2. Nell'elenco Tipo di connessione selezionare SSH.

  3. Modificare La destinazione connessione impostando l'indirizzo IP o il nome host del computer di destinazione.

    Se non sono già state specificate le credenziali, verrà richiesto di immettere una password e/o un file di chiave privata. Per altre informazioni sull'uso di un file di chiave privata, vedere Configurare una connessione remota.

    Non sono previsti requisiti di porta da configurare, ad eccezione della porta in cui è in esecuzione il server SSH.

  4. Trovare il processo di cui si vuole eseguire il debug.

    Il codice viene eseguito in un nome di processo univoco o in un processo denominato dotnet. Per trovare il processo a cui si è interessati, controllare la colonna Titolo , che mostra gli argomenti della riga di comando per il processo.

    Nell'esempio seguente viene visualizzato un elenco di processi da un computer Linux remoto su un trasporto SSH visualizzato nella finestra di dialogo Connetti a processo .

    Screenshot del processo Connetti a Linux.

    Screenshot del processo Connetti a Linux.

  5. Scegliere Connetti.

    Nella finestra di dialogo visualizzata selezionare il tipo di codice di cui si vuole eseguire il debug. Scegliere Gestito (.NET Core per Unix).

  6. Usare le funzionalità di debug di Visual Studio per eseguire il debug dell'app.

    Nell'esempio seguente viene visualizzato il debugger di Visual Studio arrestato in corrispondenza di un punto di interruzione nel codice in esecuzione in un computer Linux remoto.

    Screenshot di Hit a breakpoint (Hit a breakpoint).

    Screenshot di Hit a breakpoint (Hit a breakpoint).