Редактировать: ok, я не откажусь.отладка stl-контейнеров с использованием mingw, проблема с скриптом python
я попытался установить это в CodeBlocks, но это не работает хорошо либо:
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
так это выглядит, как будто это не имеет ничего общего с затмение Мессинг вещи, но сценарий плохо себя.
редактировать: я просто загорелся MSYS, переходите на тот же путь затмения suposedly делает (2-среда-сd D:/работа/Ludum-смели/Debug), установить те же параметры (за исключением 5- enable-pretty-printing, поскольку gdb-python, похоже, не знает этого параметра) и, наконец, получил источник .gdbinit. Он даже не вздрогнул от этого. никаких ошибок вообще.
Кто-нибудь знает, как узнать, что затмение пытается запустить, когда я нажимаю на отладку?
Также я просто попробовал «стандартную процедуру создания процесса», которая сначала прошла гладко, но прокручивалась в консоли трасс, я видел, как она просто пропускает ошибки, встречающиеся в файле python.
редактировать: я просто понял, что не устанавливая 5-включения-довольно-печати оленьей кожи набор _use_gdb_pp в printers.py, поэтому он не будет работать точно так же, как и в затмении, так или иначе.
Я думаю, довольно печать сломана 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 Сложение ID: 20130919-0819
мой MinGW инсталлятор все обновляется, и GDB-python27 устанавливается с:
gdb-python-7.5.1-mingw32-bin.tar.lzma
питон 2.7.6 32bit Пользовательские переменные среды:
PYTHONHOME = C:\Python27
PYTHONPATH = C:\Python27\Lib
PATH = c:\mingw\bin
Глобальные переменные среды: содержит гораздо больше, я только вывесить соответствующую часть:
PATH = C:\Python27\;
редактировать: я просто попытался сценарии питона из 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
редактировать: пытался отладить, что 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)
Как ваша переменная PATH? У меня были проблемы с python 3.3 (почти так же, как и у вас), поэтому я заставил 2.7.x. –
Я отредактировал вопрос еще. устанавливает ли python33 что-то в реестр? i.e должен ли я удалить python33? – mlatu
Я не знаю о регистрации, но вам не нужно его удалять. Отредактируйте переменную PATH, поместив каталог Python 2.7.x перед Python 3.3.x. Поэтому, когда вы вводите 'python' в CMD, вы должны иметь python 2.7.x. PS. Вы уверены, что вы заставляете Eclipse находить '.gdbinit' и что ваш отладчик' mingw32-gdb-python'? Я написал сообщение в блоге (http://wesleymesquita.com/blog/?p=147), которое может помочь. –