6
votes

Comment utiliser Eclipse pour déboguer un script généré libtool?

J'ai un grand projet C ++ construit avec libtool. Le problème est que Eclipse n'exécutera pas de script généré libtoure et je reçois un "programme n'est pas un exécutable reconnu". Message d'erreur. Comment puis-je utiliser Eclipse Debugger? J'utilise actuellement KDevop3 comme éditeur et débogage avec Insight .. qui est horrible.

Je pourrais peut-être exécuter l'exécutable actuel, c'est-à-dire dans le ./libs du répertoire de projet, mais je devrais ensuite définir manuellement ld_library_path et trucs comme ça ... Il doit y avoir un meilleur moyen de cela.

Toute aide serait appréciée!


1 commentaires

MISE À JOUR: Eh bien, éventuellement, je sqw aucune autre option, mais en définissant toutes les variables d'environnement moi-même (ld_library_path et telle) manuellement. Ceci est bien sûr une mauvaise pratique car ceux-ci peuvent changer finalement, mais je n'ai trouvé aucun autre moyen ..


5 Réponses :


1
votes

Vous devez convaincre Eclipse de démarrer GDB comme ceci: xxx

voir https://www.gnu.org/s/libtool/manual/html_node/debugging-executables.html


1 commentaires

Oui, bien sûr, mais comment? Iv'e a essayé beaucoup de choses, y compris la modification de la ligne de commande de débogueur, mais en vain.



1
votes

Je pense que l'on pourrait écrire un petit programme d'emballage pour interposer un exécutif de 'sh libtool - Mode exécuté "pour exécuter GDB. Appelez-le 'gdb-libtool' et invoquez cela au lieu de GDB.

Je me développe sous Windows et Linux, donc c'est quelque chose dont j'ai besoin pour moi-même.

Il y a quelques morceaux difficiles, comme obtenir les chemins directement sur la libtoure et l'invocation de GDB. Off Pour prendre une swat à cela.

Cheer, Jerry.


1 commentaires

Nope: Erreur lors de la création de session ne peut pas exécuter le programme "gdb-libtool": Inconnu Raison -



2
votes

Exécution d'un script au lieu d'un exécutable est toujours non pris en charge dans Eclipse, voir Ce bug . Jusqu'à ce que la fonctionnalité soit introduite, vous ne pouvez pas déboguer un projet compatible LibTool sous Eclipse, à moins que vous ne conservent quelque chose comme une configuration distincte xxx

, en s'appuyant sur une liaison statique uniquement à des fins de débogage.

Pour faire ça, vous

  1. Ouvrir Projet | Propriétés Dans le menu supérieur

  2. Sélectionnez AutoTools | Configurez les paramètres dans le menu de gauche de la fenêtre

  3. (éventuellement) Créez une nouvelle configuration de construction avec un C / C ++ Build | Paramètres de constructeur | Emplacement de construction

  4. sous configure | avancé , remplissez "Options de ligne de commande supplémentaires" avec - Désactiver-partagé


3 commentaires

Merci, mais je devrais toujours spécifier les chemins aux bibliothèques moi-même, n'est-ce pas?


Non, vous ne voudriez pas, puisqu'ils sont statistiques liés. Il existe d'autres inconvénients, bien sûr: chaque fois que vous modifiez la bibliothèque, vous devez recompiler les exécutables; De plus, les exécutables sont assez ballonnés.


Défaite l'un des objectifs d'avoir libtoure en premier lieu. +1 pour une solution de travail cependant.



1
votes

Pour le premier point, vous pouvez désactiver le script intermédiaire libtool en ajoutant -NO-INSTALL à ldflags dans votre Makefile.am ou vous peut simplement exécuter faire installer et déboguer à partir d'un binaire installé.

Pour le deuxième point, vous devrez définir et exporter votre ld_library_path avant lancement Eclipse.


0 commentaires

2
votes

Vous pouvez le contourner en exécutant l'exécutable actuel au lieu du script libtool. L'exécutable sera généralement trouvé dans .libs / . Donc, dans votre configuration de débogage sur l'onglet principal définit la valeur de l'application C / C ++ à quelque chose comme .libs / my_aplication . Ensuite, tout ce dont vous aurez besoin de nous faire mettre à jour ld_library_path dans votre configuration de débogage.

Allez à l'onglet Environnement de votre configuration de débogage et faites une nouvelle variable d'environnement appelée ld_library_path . Vous voudrez ajouter le répertoire .libs sur le chemin. Donc, la valeur devrait ressembler à ceci: $ {project_loc} /. Libs: $ ld_library_path en supposant que votre dossier .Libs est juste à l'intérieur du répertoire de projet.


0 commentaires