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
Na serwerze z systemem Linux należy zainstalować serwer SSH, rozpakować i zainstalować za pomocą narzędzia curl lub wget. Na przykład w systemie Ubuntu możesz to zrobić, uruchamiając polecenie:
sudo apt-get install openssh-server unzip curl
Protokół SFTP musi być włączony, a także protokół SSH. Większość dystrybucji SSH instaluje i domyślnie włącza protokół SFTP, ale nie zawsze tak jest.
Na serwerze z systemem Linux zainstaluj środowisko uruchomieniowe platformy .NET w systemie Linux i znajdź stronę zgodną z dystrybucją systemu Linux (np. Ubuntu). Zestaw .NET SDK nie jest wymagany.
Aby uzyskać kompleksowe instrukcje ASP.NET Core, zobacz Host ASP.NET Core w systemie Linux z serwerami Nginx i hostem ASP.NET Core w systemie Linux przy użyciu platformy Apache.
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.
W programie Visual Studio wybierz pozycję Debuguj dołączanie>do procesu....
Na liście Typ połączenia wybierz pozycję SSH.
Zmień element docelowy połączenia 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. Aby uzyskać więcej informacji na temat korzystania z pliku klucza prywatnego, zobacz Konfigurowanie połączenia zdalnego.
Nie ma żadnych wymagań dotyczących portów do skonfigurowania, z wyjątkiem portu, na którym działa serwer SSH.
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 .
Wybierz pozycję Dołącz.
W wyświetlonym oknie dialogowym wybierz typ kodu, który chcesz debugować. Wybierz pozycję Zarządzane (.NET Core dla systemu Unix).
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.