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.

Annotazioni

Per il debug di Linux in esecuzione nel servizio Azure Kubernetes, è consigliabile usare Bridge to 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 così come 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 assicurarsi che i servizi di debug .NET necessari siano disponibili per il debug, evitare di pubblicare l'applicazione come eseguibile a file singolo.

  • 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

È consigliabile usare una configurazione di debug quando si compila l'applicazione. È più difficile eseguire il debug del codice compilato in modalità release (una configurazione Release) rispetto al codice compilato in modalità debug. Se è necessario usare una configurazione release, disabilitare prima di tutto la funzionalità Just My Code. Aprire il riquadro Opzioni strumenti> ed espandere la sezione Tutte le impostazioni>>. Deselezionare la casella di controllo Abilita Just My Code .

È consigliabile usare una configurazione di debug quando si compila l'applicazione. È più difficile eseguire il debug del codice compilato in modalità release (una configurazione Release) rispetto al codice compilato in modalità debug. Se è necessario usare una configurazione release, disabilitare prima di tutto la funzionalità Just My Code. Aprire la finestra di dialogo Opzioni strumenti> ed espandere la sezione Debug>. Deselezionare la casella di controllo Abilita Just My Code .

Assicurarsi che il progetto sia configurato per produrre FILE PDF portabili (ovvero l'impostazione predefinita) e assicurarsi che i PDB si trovino nella stessa posizione della DLL. Per configurare questa impostazione in Visual Studio, fare clic con il pulsante destro del mouse sul progetto, quindi scegliere Proprietà>>Generale Simboli di debug.

Assicurarsi che il progetto sia configurato per produrre FILE PDF portabili (ovvero l'impostazione predefinita) e assicurarsi che i PDB si trovino nella stessa posizione della DLL. Per configurare questa impostazione in Visual Studio, fare clic con il pulsante destro del mouse sul progetto, quindi scegliere Proprietà>Compila>informazioni di debug>.

Compilare e distribuire l'applicazione

È possibile usare diversi metodi per distribuire l'app prima di avviare il debug. Ad esempio, puoi:

  • 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 state specificate credenziali, viene 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 dell'attacco al processo Linux.

    Screenshot dell'attacco al processo Linux.

  5. Scegli e collega.

    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, puoi vedere il debugger di Visual Studio fermato in corrispondenza di un punto di interruzione nel codice in esecuzione su una macchina Linux remota.

    Screenshot di Raggiunto un punto di interruzione.

    Screenshot di Raggiunto un punto di interruzione.