Lösen Sie das Problem der VScode-Konfiguration durch Remote-Debugging des Linux-Programms

Lösen Sie das Problem der VScode-Konfiguration durch Remote-Debugging des Linux-Programms

Werfen wir einen Blick auf das Problem des VScode-Remote-Debuggings im Linux-Programm. Der spezifische Inhalt ist wie folgt, schauen wir uns das an!

Ich habe vor Kurzem ein Programm unter Linux debuggt, bin bei der Verwendung von gdb jedoch noch ein Anfänger, hauptsächlich, weil es keine intuitive grafische Benutzeroberfläche hat. Ich habe online gesucht und zwei Optionen gefunden. Eine davon ist die Remote-Debugging-Funktion von VisualStudio2019. Ich habe sie noch nicht ausprobiert, da ich VScode erst kürzlich verwendet habe. Ich kann es versuchen, wenn ich Zeit habe. Eine andere Lösung besteht darin, Remote-Debugging über das Remote Development-Plug-In von VScode (offiziell von Microsoft bereitgestellt) durchzuführen. Dieser Artikel stellt diese Lösung vor.
Zwar gibt es im Internet auch andere Artikel, in denen dieser Prozess vorgestellt wird, doch sie alle beschreiben erfolgreiche Situationen, ohne auf die während des Prozesses aufgetretenen Probleme einzugehen, und einige Teile sind nicht ganz klar. Also dachte ich, ich schreibe einen. Beachten Sie auch, dass in diesem Dokument Remote-Debugging und nicht Remote-Kompilierung vorgestellt wird . Remote-Debugging von VScode wird ebenfalls unterstützt, aber ich brauche es derzeit nicht. Ich werde es später bei Bedarf konfigurieren. Außerdem muss mein Projekt mit cmake und make kompiliert werden, nicht direkt mit g++, daher habe ich mit der Konfiguration noch nicht begonnen.
Das Remote-Debugging von VScode wird mithilfe des GDBServer-Mechanismus durchgeführt. Das allgemeine Prinzip besteht darin, VScode unter Windows oder anderen grafischen Systemen zu verwenden, das Remote Development-Plug-In zu verwenden, um per SSH eine Verbindung zum Remote-Linux herzustellen und dann über die von gdbserver bereitgestellte Verbindung Remote-Debugging durchzuführen. Nachfolgend wird die spezifische Konfigurationsmethode beschrieben.

Erforderliche Software und Plugins

Zuerst müssen Sie gdb und gdbserver installieren. Sie können sie je nach Typ Ihres Remote-Systems installieren. Ich verwende Ubuntu, das bereits standardmäßig installiert ist. Der Befehl lautet wie folgt:

sudo apt installiere gdb
sudo apt installiere gdbserver

Zweitens müssen Sie das Remote Development-Plug-in für VScode installieren, das offizielle C/C++-Plug-in. Nachdem dieses C/C++-Plug-In per Remote-Zugriff mit Linux verbunden wurde, muss es auch auf dem Remote-Linux installiert werden. Sie können im Screenshot unten sehen, dass neben der Schaltfläche zum Deinstallieren des Plugins eine „Erweiterung unter SSH aktiviert: xxxx“ steht, was bedeutet, dass es bereits installiert wurde. Die Installationsmethode wird später vorgestellt, nachdem die Verbindung erfolgreich hergestellt wurde.

Remote-EntwicklungC++

Remote-Verbindung

Nach der Installation des Remote Development-Plugins können Sie eine Remoteverbindung zu Linux herstellen. Es gibt zwei Möglichkeiten, eine Verbindung über SSH herzustellen. Eine davon ist mit einem Konto und einem Passwort. Ein anderer Typ ist die Public-Private-Key-Verbindung. Es wird empfohlen, hier öffentliche und private Schlüssel zum Herstellen einer Verbindung zu verwenden, da der Remote-Debugging-Prozess später mit mehreren Stellen verbunden wird und es mühsam ist, das Kennwort mehrmals einzugeben. Wenn Sie öffentliche und private Schlüssel verwenden, müssen Sie es nur einmal konfigurieren, was sehr praktisch ist. Wenn Sie sich dennoch für die Verbindung mit einem Konto und einem Passwort entscheiden, können Sie diesen Schritt überspringen. Die SSH-Remotekonfigurationsmethode ist relativ einfach, weist unter Windows jedoch ein großes Problem auf.

Generieren Sie zunächst ein öffentliches und privates Schlüsselpaar auf dem Remote-Linux:

# Führen Sie den folgenden Befehl aus und generieren Sie gemäß den Anweisungen ein öffentliches und privates Schlüsselpaar.
ssh-keygen -t rsa

# Der öffentliche Schlüssel wird direkt im generierten Pfad gespeichert und dann an authorized_keys übertragen
# Im .ssh-Verzeichnis des Benutzers speichern. Im Allgemeinen ist beim Generieren der Standardpfad das .ssh-Verzeichnis des Benutzers. # Gehen Sie davon aus, dass der generierte öffentliche Schlüssel „vscode_rsa.pub“ ist. Achten Sie abschließend auf die Berechtigungseinstellungen. Standardmäßig ist keine Änderung erforderlich.
cat /home/Benutzer/.ssh/vscode_rsa.pub >> /home/Benutzer/.ssh/autorisierte_schlüssel
chmod 644 /root/.ssh/authorized_keys

# Laden Sie den privaten Schlüssel auf die Windows-Maschine herunter. # Nehmen Sie an, der Pfad lautet „D:/.ssh/vscode_rsa“.

Bis hierhin gibt es keine Probleme. Jetzt müssen Sie die Verbindung in VScode konfigurieren.
Nach der Installation des Remote Development-Plugins befindet sich ganz links in VScode ein Symbol für den Remote-Ressourcenmanager, wie in der folgenden Abbildung dargestellt. Wählen Sie dann SSH-Ziele aus, klicken Sie auf das Pluszeichen, fügen Sie es im Format user@ip hinzu und dann wird die Konfigurationsdatei der Remote-Verbindung gemäß den Eingabeaufforderungen angezeigt. Oder Sie öffnen die Konfigurationsdatei direkt, indem Sie in der Benutzeroberfläche unten auf das Zahnrad neben dem Pluszeichen klicken, fügen sie gemäß dem folgenden Format hinzu und fügen den Pfad des privaten Schlüssels nach IdentityFile hinzu:

Bildbeschreibung hier einfügen

Gastgeber xxxx
 Hostname xxxx
 Benutzername
 Identitätsdatei D:/.ssh/vscode_rsa

Anschließend können Sie den Remote-Ordner in der ursprünglichen Dateibrowseroberfläche öffnen. Aber wenn die Verbindung konfiguriert ist, meldet das VScode-Terminal einen Fehler:

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNUNG: UNGESCHÜTZTE PRIVATE SCHLÜSSELDATEI! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Die Berechtigungen für „vscode_rsa“ sind zu offen.
Es ist erforderlich, dass Ihre privaten Schlüsseldateien NICHT für andere zugänglich sind.
Dieser private Schlüssel wird ignoriert.
Schlüssel „vscode_rsa“ laden: ungültige Berechtigungen

Die Grundursache ist das Berechtigungsproblem des privaten Schlüssels. Wenn dies unter Linux geschieht, können Sie es mit chmod direkt auf 644 ändern, unter Windows ist dies jedoch etwas umständlicher.

Lösung:

Klicken Sie mit der rechten Maustaste auf den privaten Schlüssel und wählen Sie „Eigenschaften“, wählen Sie dann die Registerkarte [Sicherheit], klicken Sie unten auf die Schaltfläche [Erweitert], klicken Sie dann unten im neuen Popup-Fenster auf [Vererbung deaktivieren] und klicken Sie anschließend über der Vererbungsschaltfläche auf die Schaltfläche [Hinzufügen], um den aktuellen Fenster-Anmeldebenutzer als Besitzer des privaten Schlüssels zurückzusetzen und alle Berechtigungen zu überprüfen. Am Ende sollte es so aussehen:

Bildbeschreibung hier einfügen

Öffnen Sie zu diesem Zeitpunkt die VScode-Remoteverbindung erneut und es tritt kein Problem auf.

Remote-Debugging

VScode-Einstellungen

Zuerst müssen Sie das oben erwähnte C/C++-Plug-In auf dem Remote-Linux installieren. Die Installationsmethode ist einfach. Klicken Sie auf das Plug-In. Sie können sehen, dass einige Plug-Ins in den installierten Plug-Ins eine grüne Eingabeaufforderung [In SSH: IP] haben. Suchen Sie das C/C++-Plug-In, klicken Sie auf die grüne Eingabeaufforderung und installieren Sie es auf dem Remote-Linux. Starten Sie VScode nach der Installation neu. Am besten starten Sie auch das Remote-Linux neu, da ich es nicht gestartet habe. Als ich es später bediente, meldete VScode, dass der ausgewählte Debuggertyp nicht gefunden werden konnte, und es wurde nicht automatisch eine launch.json-Datei basierend auf dem von Ihnen ausgewählten Debugger generiert. Am besten ist es jedoch, wenn es ohne Neustart klappt.
Öffnen Sie dann den VScode-Ressourcenmanager, der sich oben links befindet und Dateien durchsucht. Sie werden aufgefordert, den Remote-Ordner zu öffnen. Folgen Sie zu diesem Zeitpunkt einfach den Anweisungen, um den Ordner zu öffnen, in dem sich das zu debuggende Programm befindet.

Wählen Sie dann in der Menüleiste „Ausführen -> Konfiguration hinzufügen“ aus. Daraufhin wird eine Eingabeaufforderung zur Auswahl der Debugumgebung angezeigt. Wählen Sie [C++ GDB/LLDB] aus, um die Datei launch.json automatisch zu generieren. wie folgt:

{
 // Verwenden Sie IntelliSense, um mehr über verwandte Eigenschaften zu erfahren. 
 // Bewegen Sie den Mauszeiger darüber, um die Beschreibungen vorhandener Eigenschaften anzuzeigen.
 // Weitere Informationen finden Sie unter: https://go.microsoft.com/fwlink/?linkid=830387
 "version": "0.2.0",
 "Konfigurationen": [
 {
  "Name": "(gdb) Start",
  "Typ": "cppdbg",
  "Anfrage": "starten",
  "Programm": "${workspaceFolder}/Programm",
  "Argumente": [],
  "stopAtEntry": wahr,
  "cwd": "${workspaceFolder}",
  "Umfeld": [],
  "externeKonsole": false,
  "MIMode": "gdb",
  "setupCommands": [
  {
   "description": "Pretty Printing für gdb aktivieren",
   "Text": "-enable-pretty-printing",
   "ignoreFailures": wahr
  }
  ]
 }
 ]
}

Wenn es nicht automatisch generiert wird, bedeutet dies, dass VScode die Umgebung nicht erkennt und das von Ihnen installierte Plug-In nicht wirksam wurde. Daher müssen Sie VScode und das Remote-Linux neu starten.
Das einzige, was in der generierten Datei launch.json geändert werden muss, ist das Programmfeld. ${workspaceFolder} bezieht sich auf den Remote-Ordner, den Sie gerade geöffnet haben. Sie müssen nur den Namen des zu debuggenden Programms angeben. Das Feld „stopAtEntry“ ist standardmäßig auf „false“ eingestellt. Dies gibt an, ob sich der Haltepunkt beim Starten des Debuggens bei der Hauptfunktion befindet. Ändern Sie es daher in „true“. Verwenden Sie für die anderen Einstellungen einfach die Standardeinstellungen und müssen Sie nichts hinzufügen.

Remote-Linux startet gdbserver

Starten Sie gdbserver auf dem Remote-Linux wie folgt:

#gdbserver localhost:<Port> <Programm> <Argumente>
gdbserver localhost:2333 /Pfad/zu/meinemProgramm arg1 arg2

Achten Sie darauf, die Portnummer nicht zu ändern, da dies die Portnummer ist, die standardmäßig bei der Verbindung von VScode verwendet wird. Drücken Sie dann zum Debuggen einfach F5 in VScode. GDB zeigt den Quellcode automatisch an. Daher ist es am besten, die Debug-Version des zu debuggenden Programms zu verwenden.

Referenzartikel:

https://warmgrid.github.io/2019/05/21/remote-debug-in-vscode-insiders.html

https://superuser.com/questions/1296024/windows-ssh-permissions-for-private-key-are-too-open

Dies ist das Ende dieses Artikels zur Lösung des Problems der VScode-Konfiguration des Linux-Programms zum Remote-Debuggen. Weitere relevante Inhalte zum Linux-Programm zum Remote-Debuggen von VScode finden Sie in den vorherigen Artikeln von 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird!

Das könnte Sie auch interessieren:
  • Implementierung der Remote-Linux-Entwicklung mit vscode
  • Verwenden Sie VSCodes Remote-SSH, um eine Verbindung zu Linux für die Remote-Entwicklung herzustellen
  • Lösung für das Fehlerproblem bei der Remote-Verbindung von Vscode zu Ubuntu

<<:  So erstellen Sie eine Ansicht in MySQL

>>:  Vant Uploader implementiert die Komponente zum Hochladen eines oder mehrerer Bilder

Artikel empfehlen

6 Vererbungsmethoden von JS Advanced ES6

Inhaltsverzeichnis 1. Vererbung der Prototypkette...

So fügen Sie eindeutige Indizes für Felder in MySQL hinzu und löschen sie

1. PRIMARY KEY hinzufügen (Primärschlüsselindex) ...

Grundlegende Schritte zur Sicherheitseinstellung für den CentOS7-Server

Schalten Sie den Ping-Scan aus, obwohl dies nicht...

Eine kurze Diskussion über einige Vorteile von Vue3

Inhaltsverzeichnis 1. Quellcode 1.1 Monorepo 1.2 ...

Ausführliches Tutorial zur Installation von MySQL 5.6-ZIP-Paketen

Bisher haben wir alle Dateien mit der Endung .msi...

Zusammenfassung der Dateninteraktion zwischen Docker-Container und Host

Vorwort Beim Einsatz von Docker in einer Produkti...