Pipe-Transport
Pipe-Transport ermöglicht die Kommunikation über ein Pipe-Programm zu einer Remote-Shell. Zum Beispiel ssh unter Linux. Mit der Einführung von Visual Studio Code Remote Development ist Pipe-Transport hauptsächlich für IoT-Szenarien relevant.
Anleitung
pipeTransport ist eine Option innerhalb der launch.json-Datei. Die Struktur sieht wie folgt aus:
"pipeTransport": {
"pipeCwd": "/usr/bin",
"pipeProgram": "/usr/bin/ssh",
"pipeArgs": [
"-pw",
"<password>",
"user@10.10.10.10"
],
"debuggerPath": "/usr/bin/gdb"
},
Die pipeArgs können beliebige Argumente sein, die zum Einrichten und Authentifizieren der Pipe-Verbindung erforderlich sind. Im Beispiel wird ein Passwort verwendet, aber Sie können auch einen SSH-Schlüssel verwenden.
Sie müssen möglicherweise auch eine sourceFileMap hinzufügen, um den Pfad, an dem sich der Code in der Remote-Shell befindet, dem lokalen Pfad zuzuordnen.
"sourceFileMap": {
// "remote": "local"
"/home/user/src": "/src/projectA/src"
}
Anfügen
Sie können den obigen pipeTransport-Block auch verwenden, um sich an einen Remote-Prozess anzuhängen. Im Attach-Fall müssen Sie eine processId angeben. Die Erweiterung kann Prozesse von der Remote-Maschine abfragen. Ändern Sie dazu processId": "${command:pickProcess} in processId": "${command:pickRemoteProcess}. Die pipeTransport-Einstellungen werden verwendet, um die Prozesse auf der Remote-Maschine abzufragen. Wählen Sie dann den Prozess aus der Dropdown-Liste aus. Wie bei launch müssen Sie möglicherweise sourceFileMap konfigurieren.
Docker-Beispiel
Der pipeTransport kann auch verwendet werden, um einen Prozess in einem Docker-Container zu debuggen. Für einen Attach wird launch.json Folgendes enthalten:
"pipeTransport": {
"pipeCwd": "${workspaceFolder}",
"pipeProgram": "docker",
"pipeArgs": [
"exec",
"-i",
"hello_gdb",
"sh",
"-c"
],
"debuggerPath": "/usr/bin/gdb"
},
Wobei hello_gdb der Name Ihres Containers ist.
Starten Sie den Prozess, indem Sie einen Container starten und dann denselben pipeTransport verwenden, um zusätzliche Prozesse im Container zu starten. Sehen Sie sich diese launch.json für ein vollständiges Beispiel an.