Udostępnij za pośrednictwem


Debugowanie platformy .NET Core w systemie Linux przy użyciu protokołu SSH przez dołączenie do procesu

Począwszy od programu Visual Studio 2017, można dołączać do procesów .NET Core i .NET 5+ uruchomionych w lokalnym lub zdalnym wdrożeniu systemu Linux za pośrednictwem protokołu Secure Shell (SSH). W tym artykule opisano sposób konfigurowania debugowania i debugowania. Aby zapoznać się ze scenariuszami debugowania przy użyciu kontenerów platformy Docker, zobacz Artykuły dołączanie do procesu uruchomionego w kontenerze platformy Docker i artykuły dotyczące narzędzi kontenerów . Aby debugować system Linux w programie WSL 2 z poziomu programu Visual Studio (bez dołączania do procesu), zobacz Debugowanie aplikacji .NET Core w programie WSL 2 za pomocą programu Visual Studio.

Uwaga

W przypadku debugowania systemu Linux działającego w usłudze Azure Kubernetes Service (AKS) zaleca się dołączanie mostu do platformy Kubernetes zamiast dołączania do procesu.

Wymagania wstępne

Przygotowywanie aplikacji do debugowania

Aby przygotować aplikację do debugowania:

  • Rozważ użycie konfiguracji debugowania podczas kompilowania aplikacji. Debugowanie kodu kompilowanego w wersji detalicznej (konfiguracji wydania) jest znacznie trudniejsze niż debugowanie skompilowanego kodu. Jeśli musisz użyć konfiguracji wydania, najpierw wyłącz opcję Tylko mój kod. Aby wyłączyć to ustawienie, wybierz pozycję Narzędzia>Opcje>Debugowanie, a następnie usuń zaznaczenie pozycji Włącz tylko mój kod.
  • Upewnij się, że projekt został skonfigurowany do tworzenia przenośnych plików PDB (co jest ustawieniem domyślnym) i upewnij się, że pliki PDB znajdują się w tej samej lokalizacji co biblioteka DLL. Aby to skonfigurować w programie Visual Studio, kliknij prawym przyciskiem myszy projekt, a następnie wybierz pozycję Właściwości>Ogólne>symbole debugowania.
  • Upewnij się, że projekt został skonfigurowany do tworzenia przenośnych plików PDB (co jest ustawieniem domyślnym) i upewnij się, że pliki PDB znajdują się w tej samej lokalizacji co biblioteka DLL. Aby to skonfigurować w programie Visual Studio, kliknij prawym przyciskiem myszy projekt, a następnie wybierz polecenie Właściwości>Kompiluj>zaawansowane>informacje o debugowaniu.

Kompilowanie i wdrażanie aplikacji

Aby wdrożyć aplikację przed debugowaniem, można użyć kilku metod. Można na przykład:

  • Skopiuj źródła na komputer docelowy i skompiluj je na maszynie z dotnet build systemem Linux.

  • Skompiluj aplikację w systemie Windows, a następnie przenieś artefakty kompilacji na maszynę z systemem Linux. (Artefakty kompilacji składają się z samej aplikacji, przenośnych plików PDB, wszelkich bibliotek środowiska uruchomieniowego, od których może zależeć, oraz pliku deps.json ).

Po wdrożeniu aplikacji uruchom aplikację.

Dołączanie debugera

Gdy aplikacja jest uruchomiona na maszynie z systemem Linux, możesz dołączyć debuger.

  1. W programie Visual Studio wybierz pozycję Debuguj dołączanie>do procesu....

  2. Na liście Typ Połączenie ion wybierz pozycję SSH.

  3. Zmień element docelowy Połączenie ion na adres IP lub nazwę hosta komputera docelowego.

    Jeśli nie podano jeszcze poświadczeń, zostanie wyświetlony monit o wprowadzenie hasła i/lub pliku klucza prywatnego.

    Nie ma żadnych wymagań dotyczących portów do skonfigurowania, z wyjątkiem portu, na którym działa serwer SSH.

  4. Znajdź proces, który chcesz debugować.

    Kod jest uruchamiany w unikatowej nazwie procesu lub w procesie o nazwie dotnet. Aby znaleźć interesujący Cię proces, sprawdź kolumnę Tytuł , która pokazuje argumenty wiersza polecenia dla procesu.

    W poniższym przykładzie zostanie wyświetlona lista procesów ze zdalnego komputera z systemem Linux za pośrednictwem transportu SSH wyświetlanego w oknie dialogowym Dołączanie do procesu .

    Attach to Linux process

  5. Wybierz pozycję Dołącz.

  6. W wyświetlonym oknie dialogowym wybierz typ kodu, który chcesz debugować. Wybierz pozycję Zarządzane (.NET Core dla systemu Unix).

  7. Debugowanie aplikacji przy użyciu funkcji debugowania programu Visual Studio.

    W poniższym przykładzie debuger programu Visual Studio został zatrzymany w punkcie przerwania w kodzie uruchomionym na zdalnej maszynie z systemem Linux.

    Hit a breakpoint