Скажем, у нас есть следующий мега-простой Python script:
print "Initializing"....
a=10
print "Variable value is %d" % (a)
print "All done!"
... и скажем, я бы хотел отладить этот script, поставив точку останова в строке a=10
, а затем перейдя через script.
Теперь я хотел бы использовать gdb
для этого, потому что я хотел бы отлаживать привязки Python, которые могут быть частью библиотеки общего объекта (.so
) - следовательно, я бы идеально разместил точка останова в строке кода Python, а затем "входите" в часть C общего объекта... (Обратите внимание, что DebuggingWithGdb - PythonInfo Wiki на самом деле не явно укажите, что это возможно)
Проблема заключается в следующем: gdb
сам по себе не может распознать точки останова, помещенные в строку Python script:
$ 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 script работает в пределах gdb
, точка останова просто не достигается.
Итак - это то, что я хочу сделать, возможно с помощью gdb
; а если нет, то какие другие альтернативы мне нужно для чего-то подобного?