Maison  >  Article  >  développement back-end  >  Comment puis-je m'attacher à un binaire go compilé de manière croisée pour le débogage à l'aide de l'IDE Visual Studio Code ?

Comment puis-je m'attacher à un binaire go compilé de manière croisée pour le débogage à l'aide de l'IDE Visual Studio Code ?

WBOY
WBOYavant
2024-02-08 20:53:53828parcourir

如何使用 Visual Studio Code IDE 附加到交叉编译的 go 二进制文件以进行调试?

Contenu de la question

J'utilise Visual Studio Code comme IDE pour une application basée sur Golang. L'application fonctionnera sur des cibles Linux. Je souhaite attacher le débogueur VSC à ce binaire compilé de manière croisée. Le binaire peut être compilé pour les plateformes arm ou x86. Je sais qu'un fichier launch.json peut y parvenir, mais je ne l'ai jamais utilisé. s'il vous plaît, aidez-moi.


Bonne réponse


Debugger dlv est utilisé pour déboguer le code go. Delve ou dlv a une limitation selon laquelle il ne peut être ajouté qu'aux binaires pour les architectures 64 bits. J'ai donc compilé le code pour l'architecture AMD 64 bits et l'ai exécuté sur ma machine Linux. Ensuite, j'ai obtenu l'ID de processus du binaire et j'ai joint une analyse approfondie. J'ai utilisé le port 2345 pour le serveur Delve

dlv Attach some_process_id --listen=:2345 --headless --api-version=2 --log

Vous devrez peut-être également activer/modifier le niveau de débogage sur votre cible Linux avec les privilèges sudo.

cat 0> /proc/sys/kernel/yama/ptrace_scope

Créez un launch.json sur l'IDE Visual Studio Code avec les paramètres suivants :

{
            "name": "Launch Windows",
            "type": "go",
            "request": "attach",
            "mode": "remote",
            "remotePath": "path/to/binary",
            "port": 2345,
            "host": "target ip address"
 }

Puisque j'exécute Visual Studio à partir d'une machine Windows, je sélectionne le mode distant pour la cible Linux distante.

Maintenant, en exécutant le débogueur à partir de Visual Studio Code, les paramètres de launch.json rechercheront le débogueur/serveur dlv sur la cible et s'y attacheront. Placez des points d'arrêt dans votre code, de préférence dans un endroit pouvant être déclenché en externe. Par exemple. Accepte les appels sur le serveur qui peuvent être déclenchés à partir d'appels clients.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer