Error de importación: sin nombre de módulo libstdcxx

2 minutos de lectura

Cuando uso gdb para depurar mi programa C++ con Fallo de segmentaciónvengo con este error en gdb.

Rastreo (última llamada más reciente): Archivo “/usr/share/gdb/auto-load/usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.19-gdb.py”, línea 63, desde libstdcxx .v6.printers import register_libstdcxx_printers ImportError: ningún módulo llamado ‘libstdcxx’

Estoy usando Gdb 7.7.1 y g ++ versión 4.8.4. He buscado en Google pero no he obtenido respuestas. ¿Alguien puede solucionar mi error? Muchas gracias.

Este es un error en /usr/lib/debug/usr/lib/$triple/libstdc++.so.6.0.18-gdb.py; Cuando inicie gdb, ingrese:


python sys.path.append("/usr/share/gcc-4.8/python");

  • Sugiero leer la respuesta de cloudrain21 que es más descriptiva.

    – Luis Go

    17 de enero de 2022 a las 9:06


avatar de usuario de cloudrain21
lluvia21

Encontré este error durante el uso de gdb en emacs. (en el contenedor docker – ubuntu) Lo probé como se muestra a continuación y funcionó bien.

(1) abra libstdc++.so.xxx-gdb.py

sh> sudo vi /usr/share/gdb/auto-load/usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.19-gdb.py

(2) modifique ese archivo (libstdc++.so.xxx-gdb.py) como se muestra a continuación.

import sys 
import gdb 
import os
import os.path

pythondir="/usr/share/gcc-4.8/python"
libdir="/usr/lib/x86_64-linux-gnu"

sys.path.append(pythondir)    <-- add this code

(3) ejecutar gdb de nuevo

Type "apropos word" to search for commands related to "word"...
Reading symbols from ./a.out...done.
(gdb) b main
Breakpoint 1 at 0x400ae9: file vector7.cpp, line 7.
(gdb) r
Starting program: /home/dplee/work/study_room/c++/a.out 

Breakpoint 1, main () at vector7.cpp:7
7       vector<int> v(10);
(gdb) list
2   #include <vector>
3   using namespace std;
4   
5   int main()
6   {
7       vector<int> v(10);
8       int num = 0;
9   
10      for(auto& i : v)
11      {
(gdb) 

Avatar de usuario de Navnish Garg
Garg navideño

Elegí libstdcxx de la ruta de instalación de gcc y este error desapareció.

sys.path.insert(0, '/global/freeware/Linux/RHEL6/gcc-6.2.0/share/gcc-6.2.0/python')

  • ¡También funcionó para mí con la ruta a gcc instalada localmente en mi entorno!

    – shargors

    28 de febrero de 2020 a las 19:45

si usaste sudo para iniciar el gdb, asegúrese de tener la RUTA correcta.

Prueba esto sudo PATH=$PATH gdb ...

Para los que no tienen sudo privilegio, establecimiento PYTHONPATH env antes de ejecutar gdb trabajará:

export PYTHONPATH="/usr/share/gcc-<your_version>/python:${PYTHONPATH}"

¿Ha sido útil esta solución?