Отладка: пошаговое выполнение скрипта Python с использованием gdb?
Допустим, у нас есть следующий мега-простой скрипт на Python:
print "Initializing"....
a=10
print "Variable value is %d" % (a)
print "All done!"
... и сказать, я хотел бы отладить этот сценарий, поместив точку останова в строкеa=10
, а затем пошаговое выполнение сценария.
Теперь я хотел бы использоватьgdb
для этого, потому что я хотел бы отлаживать привязки Python, которые могут быть частью общего объекта (.so
) библиотека - следовательно, в идеале я бы поместил точку останова в строку кода Python, а затем "шагнул" в часть C общего объекта ... (Обратите внимание, чтоDebuggingWithGdb - PythonInfo Wiki на самом деле явно не заявляет, что это возможно)
Проблема в:gdb
сам по себе не может реально распознать точки останова, помещенные в строку скрипта Python:
$ gdb python
GNU gdb (GDB) 7.3.50.20110806-cvs
...
Reading symbols from /usr/bin/python...(no debugging symbols found)...done.
(gdb) b test.py:3
No symbol table is loaded. Use the "file" command.
Make breakpoint pending on future shared library load? (y or [n]) y
Breakpoint 1 (test.py:3) pending.
(gdb) run test.py
Starting program: /usr/bin/python test.py
...
... и в то время как весь скрипт Python работает внутриgdb
точка останова просто никогда не достигается.
Так что - это то, что я хочу сделать, вообще возможно сgdb
; и если нет, то какие еще альтернативы я бы выбрал для чего-то подобного?