Je déterminais un problème dans lequel le démarrage de la demande de GDB entraîne une erreur de recherche de symboles, mais le commençant à partir de la coque fonctionne. p>
Il s'avère que chaque fois que vous démarrez un programme de GDB, il démarrera une nouvelle coquille et remplacera ainsi toutes les variables d'environnement que j'avais définies avant de démarrer GDB (comme Ce n'est pas vraiment le comportement que je veux. Quelqu'un peut-il expliquer la justification de cela, ou dites-moi comment je peux éteindre ça? P> ld_library_path code>). P>
4 Réponses :
Lorsque vous démarrez GDB de la coquille, vous commencez comme un nouveau processus, il n'y a aucun moyen de le faire. Dans UNIX, de nouveaux processus héritent de certains de l'environnement du parent.
Pour vous assurer qu'une variable est héritée, si vous utilisez une coque de type Bourne, essayez d'exporter celui-ci: P>
export LD_LIBRARY_PATH=...
Je suppose que le problème est que l'OP définit son ld_library_path code> dans
~ / .bstrucrc code> ou quelque chose comme ça, et ce réglage écrase i> quoi qu'il a défini avant d'invoquer le GDB,].
Vous avez cloué, @employeRussien!
Le débuteur ( inférieur em> dans le langage de GDB) est toujours lancé avec un environnement propre afin d'obtenir des résultats plus reproductibles. Afin de définir une variable là-bas, utilisez la commande set env VARNAME=VALUE
Si, par "Environnement propre", vous voulez dire autre chose qu'une copie de l'environnement de GDB (plus tout ce que les commandes Set env code> ont été exécutées), ils sont très erronés.
Je suppose que vous inconditionnellement em> définissez ld_library_path code> dans votre
~ / .cshrc code> ou similaire. Donc, si de l'invite de shell vous faites:
export LD_LIBRARY_PATH=foo # or for csh:
setenv LD_LIBRARY_PATH foo
$SHELL -c 'echo $LD_LIBRARY_PATH'
Je viens de courir dans cette erreur exacte dans ma configuration.
Je rencontre le même problème. Je trouve que dans Infort.h (code source de gdb gdb / inférieur.h )
Il existe un macro puis je définis startup_with_shell code>, il existe également un commentaire comme
startup_with_shell code> comme 0 et décrété
Start_inferior_traps_Expecté code>
et recompilé mon GDB. Après que GDB n'ait plus commencé de shell. P> p>
La GDB actuelle vous permet de le faire par: définir le démarrage-with-shell off code>