depurando contenedores stl usando mingw, problema con el script python

Edición: ok, no me rendiré.

Intenté configurar esto en codeblocks, pero eso tampoco funciona bien:

Starting debugger: C:\MinGW\bin\gdb-python27.exe -nx -fullname  -quiet 
done
Setting breakpoints
Attaching to program with pid: 7760
Debugger name and version: GNU gdb (GDB) 7.5
Attaching to process 7760
> source C:\MinGW\bin\.gdbinit
Traceback (most recent call last):
  File "<string>", line 5, in <module>
  File "C:\MinGW\share\gcc-4.8.1\python\libstdcxx\v6\printers.py", line 917, in register_libstdcxx_printers
    register_type_printers(obj)
  File "C:\MinGW\share\gcc-4.8.1\python\libstdcxx\v6\printers.py", line 855, in register_type_printers
    add_one_type_printer(obj, 'basic_string', pfx + 'string')
  File "C:\MinGW\share\gcc-4.8.1\python\libstdcxx\v6\printers.py", line 846, in add_one_type_printer
    gdb.types.register_type_printer(obj, printer)
  File "c:\mingw\share\gdb/python\gdb\types.py", line 179, in register_type_printer
    locus.type_printers.insert(0, printer)
AttributeError: 'module' object has no attribute 'type_printers'
C:\MinGW\bin\.gdbinit:7: Error in sourced command file:
Error while executing Python code.
Error while executing Python code.
> python print sys.version
2.7.6 (default, Nov 10 2013, 19:24:18) [MSC v.1500 32 bit (Intel)]
> show version
GNU gdb (GDB) 7.5
Copyright (C) 2012 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "i686-pc-mingw32".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Debugger name and version: GNU gdb (GDB) 7.5

así que parece que esto no tiene nada que ver con el eclipse ensuciando las cosas, pero el script se comporta mal.

edición: acabo de encender msys, navegué hasta la misma ruta que supuestamente eclipse (2-environment-cd D: / work / ludum-dare / Debug), configuro los mismos parámetros (excepto 5-enable-pretty-printing desde gdb- python no parece saber ese ajuste) y finalmente obtuvo .gdbinit Ni siquiera hizo una mueca de dolor al hacer eso. No hay errores en absoluto.

¿Alguien sabe cómo averiguar qué eclipse está tratando de ejecutarse cuando hago clic en depurar?

También probé el "lanzador de procesos de creación estándar" que al principio funcionó sin problemas, pero al desplazarme hacia arriba en la consola de traces, simplemente lo salté sobre los errores encontrados en el archivo python.

edición: me acabo de dar cuenta de que no configurar 5-enable-pretty-printing no establece _use_gdb_pp en printers.py, por lo que no se ejecutará de la misma manera que en eclipse.

Supongo que la impresión bonita está rota en mingw + eclipse cdt

Después de seguir estos pasos:https://stackoverflow.com/a/14266862/3239702 Estoy frente a la siguiente salida en eclipse:

610,711 2-environment-cd D:/work/ludum-dare/Debug
610,715 2^done
610,715 (gdb) 
610,716 3-gdb-set breakpoint pending on
610,725 3^done
610,725 (gdb) 
610,726 4-gdb-set detach-on-fork on
610,735 4^done
610,735 (gdb) 
610,736 5-enable-pretty-printing
610,745 5^done
610,745 (gdb) 
610,746 6-gdb-set python print-stack none
610,755 6^done
610,755 (gdb) 
610,756 7-gdb-set print object on
610,765 7^done
610,765 (gdb) 
610,766 8-gdb-set print sevenbit-strings on
610,775 8^done
610,775 (gdb) 
610,776 9-gdb-set host-charset UTF-8
610,785 9^done
610,785 (gdb) 
610,786 10-gdb-set target-charset WINDOWS-1252
610,795 10^done
610,795 (gdb) 
610,795 11-gdb-set target-wide-charset UTF-16
610,805 11^done
610,805 (gdb) 
610,822 12source D:\work\ludum-dare\.gdbinit
610,825 &"source D:\\work\\ludum-dare\\.gdbinit\n"
610,896 &"Traceback (most recent call last):\n"
610,896 &"  File \"<string>\", line 4, in <module>\n"
610,896 &"  File \"C:/MinGW/share/gcc-4.8.1/python\\libstdcxx\\v6\\printers.py\", line 917, in regis\
ter_libstdcxx_printers\n"
610,915 &"    register_type_printers(obj)\n"
610,915 &"  File \"C:/MinGW/share/gcc-4.8.1/python\\libstdcxx\\v6\\printers.py\", line 855, in regis\
ter_type_printers\n"
610,917 &"    add_one_type_printer(obj, 'basic_string', pfx + 'string')\n"
610,917 &"  File \"C:/MinGW/share/gcc-4.8.1/python\\libstdcxx\\v6\\printers.py\", line 846, in add_o\
ne_type_printer\n"
610,918 &"    gdb.types.register_type_printer(obj, printer)\n"
610,918 &"  File \"c:\\mingw\\share\\gdb/python\\gdb\\types.py\", line 176, in register_type_printer\
\n"
610,928 &"    locus.type_printers.insert(0, printer)\n"
610,928 &"AttributeError: 'module' object has no attribute 'type_printers'\n"
610,928 &"D:\\work\\ludum-dare\\.gdbinit:6: Error in sourced command file:\n"
610,928 &"Error while executing Python code.\n"
610,928 12^error,msg="D:\\work\\ludum-dare\\.gdbinit:6: Error in sourced command file:\nError while \
executing Python code."
610,929 (gdb) 

He buscado en la web a otras personas que tienen este problema, pero parece que obtuve el premio mayor. Tengo: IDE de Eclipse para desarrolladores de C / C ++

Versión: Kepler Service Release 1 Build ID: 20130919-0819

mi instalador mingw está actualizado, y gdb-python27 se instala desde:

gdb-python-7.5.1-mingw32-bin.tar.lzma

Python 2.7.6 32bit Variables de entorno de usuario:

PYTHONHOME = C:\Python27
PYTHONPATH = C:\Python27\Lib
PATH = c:\mingw\bin

Variables del entorno global: contiene mucho más, solo publico la parte relevante:

PATH = C:\Python27\;

edición: acabo de probar los scripts de python desde svn (svn: //gcc.gnu.org/svn/gcc/trunk/libstdc++-v3/python), por supuesto, cambié la ruta en mi .gdbinit en consecuencia. la salida en la consola de "gdb traces" es casi la misma, excepto por un par de números de línea que difieren, pero los errores en esas líneas son idénticos, así que supongo que solo hubo una refactorización o algo así.

y también mi archivo .gdbinit como está ahora. antes de la verificación svn, se usó la línea comentada en lugar de la línea 4:

python
import sys
# sys.path.insert(0, 'C:/MinGW/share/gcc-4.8.1/python')
sys.path.insert(0, 'D:/work/libstdc++-v3/python')
from libstdcxx.v6.printers import register_libstdcxx_printers
register_libstdcxx_printers (None)
end

edición: intenté depurar ese script printers.py: agregué algunas impresiones a la función register_libstdcxx_printers:

def register_libstdcxx_printers (obj):
    "Register libstdc++ pretty-printers with objfile Obj."
    global _use_gdb_pp
    global libstdcxx_printer
    print("initialy obj: " + str(obj))
    print("_use_gdb_pp: " + str(_use_gdb_pp))
    if _use_gdb_pp:
        gdb.printing.register_pretty_printer(obj, libstdcxx_printer)
    else:
        if obj is None:
            obj = gdb
        obj.pretty_printers.append(libstdcxx_printer)
    print("after gdb.printing.register_pretty_printer(obj, libstdcxx_printer): obj: " + str(obj))
    register_type_printers(obj)

La salida de esto es:

559,740 ~"initialy obj: None\n"
559,740 ~"_use_gdb_pp: True\n"
559,740 ~"after gdb.printing.register_pretty_printer(obj, libstdcxx_printer): obj: None\n"

Realmente no puedo culparlo por no encontrar el atributo 'type_printers' en Ninguno, ahora puedo? Supongo que ninguno viene de la línea 6 en mi .gdbinit:

register_libstdcxx_printers (None)

Respuestas a la pregunta(1)

Su respuesta a la pregunta