J'utilise ubuntu 14.04, où python3 est un package système par défaut.
Je veux déboguer des programmes Python2.7 avec gdb, mais je semble rencontrer ce problème:
Lorsque je suis dans gdb, l'utilisation de la commande py
me place dans un interpréteur, j'ai donc exécuté ces commandes dans l'interpréteur:
Je vérifie d'abord la version interprète:
(gdb) py
>import sys
>print(sys.version)
>end
3.4.0 (default, Apr 11 2014, 13:08:40)
[GCC 4.8.2]
Ensuite, je vérifie quel exécutable interpréteur est utilisé
(gdb) py
>import sys
>print(sys.executable)
>end
/usr/bin/python
(gdb)
Puis en bash, je vérifie l'interprète:
12:34]hostname ~ $ls -l /usr/bin/python
lrwxrwxrwx 1 root root 9 Dec 21 2013 /usr/bin/python -> python2.7
Donc, même si gdb dit qu'il utilise mon interpréteur 2.7, il en utilise un autre. J'ai besoin d'un interpréteur 2.7 pour pouvoir l'utiliser avec les extensions spécifiques python fournies par le paquet ubuntu 'python2.7-dbg', car pour autant que je sache, il n'y a pas un tel paquet pour = python 3.4 pour l'instant, et même s'il y en avait, les programmes que je veux déboguer fonctionnent python 2.7
Ma question est de savoir comment puis-je lui faire utiliser l'interprète que je veux?
[EDIT]Ne désinstallez pas python btw. Je l'ai fait sur Ubuntu 14.04 et cela a détruit mon système. Impossible de le relever. Je l'utilise actuellement sans gestionnaire de fenêtres (c'est cool et 1337), mais vous avez l'idée.
Donc, même si gdb dit qu'il utilise mon interprète 2.7
GDB ne le dit pas. Il dit qu'il utilise 3.4.0, et que l'interpréteur est lié à GDB, sous la forme de libpython3.4.a
ou libpython3.4.so
.
Puisqu'il n'y a pas de réel Python binaire impliqué, le bogue (mineur) ici est que sys.executable
Retour /usr/bin/python
. Il serait peut-être préférable qu'il retourne /usr/bin/gdb
au lieu.
J'ai besoin d'un interprète 2.7
Dans ce cas, vous devrez reconstruire gdb
à partir de la source, après l'avoir configuré avec le --with-python
valeur.
$ apt-get -qq update
$ apt-get install gdb python2.7-dbg python3-all-dbg
$ gdb -ex r -ex quit --args python2 -c "import sys ; print(sys.version)" # Py2.7
$ gdb -ex r -ex quit --args python3 -c "import sys ; print(sys.version)" # Py3.6