отладка контейнеров stl с помощью mingw, проблема с скриптом python

редактировать: хорошо, я не сдамся.

Я пытался установить это в кодовых блоках, но это тоже не работает:

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

так что это выглядит так, как будто это не имеет ничего общего с тем, что затмение все портит, а сценарий плохо себя ведет.

edit: я только что запустил msys, перешел по тому же пути, что и Eclipse (2-environment-cd D: / work / ludum-dare / Debug), установил те же параметры (кроме 5-enable-pretty-printing, так как gdb- Python, похоже, не знает эту настройку) и, наконец, получил .gdbinit. Он даже не вздрогнул от этого. нет ошибок вообще.

Кто-нибудь знает, как узнать, что Eclipse пытается запустить, когда я нажимаю на отладку?

Также я просто попробовал «стандартный запуск процесса создания», который сначала прошел гладко, но прокручивая вверх в консоли трассировки, я увидел, что она просто пропускает ошибки, встречающиеся в файле python.

редактировать: я только что понял, что установка 5-enable-pretty-printing не устанавливает _use_gdb_pp в printers.py, поэтому он не будет работать так же, как в eclipse.

Я думаю, что в mingw + eclipse cdt не работает красивая печать

после выполнения этих шагов:https://stackoverflow.com/a/14266862/3239702 я получаю следующий вывод в затмении:

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) 

Я искал в Интернете других людей, у которых есть эта проблема, но похоже, что я получил джекпот. я получил: Eclipse IDE для разработчиков C / C ++

Версия: Kepler Service Release 1 Идентификатор сборки: 20130919-0819

Мой установщик mingw полностью обновлен, и gdb-python27 устанавливается из:

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

32-битные переменные среды пользователя python 2.7.6:

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

Глобальные переменные среды: содержит гораздо больше, я размещаю только соответствующую часть:

PATH = C:\Python27\;

редактировать: я только что попробовал скрипты Python из SVN (SVN: //gcc.gnu.org/svn/gcc/trunk/libstdc++-v3/python), конечно, я изменил путь в моем .gdbinit соответственно. выходные данные в консоли "gdb traces" в основном одинаковы, за исключением нескольких номеров строк, которые отличаются, но ошибки в этих строках идентичны, поэтому я полагаю, что произошел какой-то рефакторинг или что-то подобное.

а также мой файл .gdbinit, как сейчас. перед проверкой svn вместо строки 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

edit: попытался отладить этот скрипт printers.py: я добавил несколько отпечатков в функцию 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)

выход этого:

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"

я действительно не могу винить это, чтобы не найти атрибут 'type_printers' на None, теперь я могу? Я полагаю, что Ни один не из строки 6 в моем .gdbinit:

register_libstdcxx_printers (None)

Ответы на вопрос(1)

Ваш ответ на вопрос