Débogage à distance des applications C++ avec Eclipse CDT/RSE/TDR
Je me bats avec Eclipse (Windows) pour le connecter à ma boîte Linux et de la compilation et de débogage de code C++, il y à distance.
Ce que j'ai de travail:
- CDT/RSE/TDR installé (Eclipse Juno, CDT 8.1.2, PTP(RDT) 6.0.4, RSE 3.4)
- rdt-serveur fonctionne sur Linux (
perl ./daemon.pl 4075
) - créer des projets C++ (Makefile base)
- de la compilation et de débogage local les projets C++
- créer des projets à distance (à l'aide de la "Linux" connexion à la rdt-serveur)
- compiler à distance des projets (Makefile base)
Certains manuels de choses que je peux faire (sans Eclipse):
- "à distance" debug mes projets compilés:
ssh mybox 'cd /path/to/project; gdb main'
- démarrer une gdbserver:
ssh mybox 'cd /path/to/project; gdbserver fqdn:10000 main'
Ce n'est pas de travail: Debug dans Eclipse
- déboguer via "C++ de l'application" Erreur: Programme non spécifié (parce que j'ai pas de code local)
- déboguer via "C++ à distance" Erreur: Programme non spécifié (ai-je besoin d'un code pour cela?)
- déboguer via "C++ attacher" (Débogueur: "gdbserver")
- gdbserver en cours d'exécution sur linuxbox
- gdb ne peux pas parler pour les gdbserver (cygwin gdb 7.5, linux gdb/gdbserver 7.3); avertissement: l'Architecture rejeté la cible fournis la description.
- déboguer via "C++ attacher" (Débogueur: "gdb") va essayer de joindre à mon processus Windows.
D'autres choses qui pourraient causer des problèmes:
- Je suis en utilisant le
ssh
binaire fourni avec MSYS/Git (pas surPATH
) - Cygwin n'est pas sur
PATH
Je voudrais vraiment faire le débogage à distance dans Eclipse pour mes projets C++.
Avez-vous des suggestions sur la manière de procéder à partir d'ici?
Vous devez vous connecter pour publier un commentaire.
Test de cohérence avec la CLI
Avant de faire quoi que ce soit, assurez-vous de:
Cette réponse suppose que vous pouvez le faire sur le conseil de développement:
Et sur l'hôte:
et puis l'étape de débogage tout correctement.
Eclipse installation
Testé sous Ubuntu 16.04 hôte, l'Éclipse de l'Oxygène 4.7.0 (téléchargé depuis le site internet),
gdbserver
7.12,aarch64-linux-gnu-gdb
7.6.J'ai utilisé avec succès l'ensemble des méthodes suivantes:
Manuel
Avec cette méthode, nous avons pour lancer
gdbserver
sur la cible avant l'exécution de debug d'Eclipse.Pro: dispense de la configuration des connexions SSH à travers Eclipse pour permettre Eclipse pour
Con: vous avez à relancer
gdbserver
à chaque fois le débogage débute. Ce problème pourrait être surmonté si l'Éclipse comprisgdbserver --multi
, mais je ne le pense pas?En raison de sa simplicité, je recommande que vous obtenez cette méthode de travail en premier.
Ouvrir le debug configurations, puis créer un nouveau "C /C++ Application à Distance".
Sous l'onglet "Principal":
sélectionnez le "Nom à", "projeter" et "Application C/C++" comme d'habitude pour un local de débogage
au bas launcher, cliquez sur "Sélectionner d'autres", cochez la case "Utiliser la configuration spécifique de paramètres" et choisissez "GDB (FSN) Manuel de Débogage à Distance du Lanceur"
Pourquoi nous faisons cela: le lanceur automatique se connecte d'abord au conseil d'administration avec SSH et lance le
gdbserver
pour vous.Sous l'onglet "Débogueur":
"Débogueur GDB": même que celle utilisée à partir de la CLI sur l'hôte,
aarch64-linux-gnu-gdb
pour cet exempleSous-onglet "Connexion": définir le nom d'hôte et le port comme transmis à l'hôte sur le CLI (
board-hostname
et1234
)Enfin, lancer manuellement
gdbserver
sur la cible, comme nous l'avons fait à partir de la CLI:et démarrer le débogueur de Eclipse normalement.
Vous devez redémarrer
gdbserver
chaque fois que vous terminez le programme.Automatique avec mot de passe auth
C'est la meilleure méthode pour les conseils de développement, qui ont résolu connu du public les mots de passe.
Il se connecte à la cible avec SSH et un mot de passe, et lance
gdbserver
sur la cible automatiquement à chaque fois, ce qui est super pratique!Cible
gdbserver
stdout va à l'Éclipse fenêtre "Console", ce qui a encore réduit la fenêtre de commutation.Dans Eclipse jeu:
pour le C/C++ de l'Application" à
/root/path/to/project/path/to/executable
Automatique avec clé publique
Très similaire à l'authentification par mot de passe, sauf que vous devez aller à: "Connexion", "Nouveau", et choisissez "clé Publique authentification basée sur les"
Pour:
Contre:
SSH permet de se connecter sans mot de passe si vous:
~/.ssh/authorized_keys
sur la cible pour contenir la~/.ssh/id_rsa.pub
à partir de l'hôteAvant d'utiliser cette méthode, assurez-vous que vos clés autorisées travailler à partir de la ligne de commande, c'est à dire, vous devriez maintenant être en mesure de le faire:
sans avoir à taper de mot de passe.
Changer le répertoire de travail courant du processus
Comment définir le répertoire de travail courant du programme de débogage à distance avec gdbserver Automatique Lanceur dans Eclipse CDT?
Oui, parce que les symboles sont chargés à partir d'une copie locale de code.
Dans le débogueur onglet de ce type de configuration de lancement, vous trouverez les paramètres de serveur distant et le port. Utiliser le nom de la machine et le port que vous avez spécifié lorsque vous avez commencé à gdbserver.
Autant que je sache, ce ne sera toujours pas travailler comme gdb sur votre machine windows ne sera pas en charge le débogage de programmes linux. Vous aurez besoin d'une croix construire de gdb (configuré et construire avec host=mingw-ou-quelque chose et cible=linux).
Malheureusement, cette question n'a pas encore de résultat dans la solution désirée. Néanmoins, vous pourriez être intéressés de savoir comment j'ai fait "résolu" le problème:
Nous sommes maintenant directement en développement sur les boîtes de Linux, de tout faire à distance. Nous avons mis en place de bureau des utilisateurs sur les boîtes de Linux et de connexion via VNC pour exécuter Eclipse et de l'utiliser en tant que front-end
gdb
. Alors que VNC est pas la meilleure solution (peut-être que nous essayons NX plus tard) cette solution nous libère de tous les problèmes avecgdbserver
ou RSE/TDR.Dès maintenant (Luna M6), Eclipse CDT+RDT+RSE semble être une chaîne de manque quelques liens lorsque vous avez besoin de:
Ces exigences sont très répandues de nos jours quant à l'abondance de Linux BRAS de conseils, tels que la Raspberry Pi et OLinuxino. Ces conseils ont généralement assez de ressources pour faire fonctionner une chaîne de traitement, mais pas assez pour fournir un bureau à distance de l'environnement pour exécuter l'IDE à distance.
Ma solution finale:
Après plusieurs jours d'efforts, j'ai finalement abandonné Eclipse CDT+RDT+RSE pour NetBeans C/C++ À Distance De L'Environnement De Développement qui fonctionne comme un charme pour moi.
Vous pouvez essayer ce plugin avec Eclipse, parallèlement à la version de l'application
voici un lien
Il fonctionne très bien dans le de développer, à partir d'une machine Windows de programme sur Linux