- 另外:对于core dump: gdb版本是>=7,gdb从版本7开始支持对Python的debug。
- 确保你的系统中安装了 GDB 调试器和对应版本的 Python 调试信息包(例如 python-dbg 或 python-debuginfo)。
# 第一步先gdb跑执行python脚本时使用的python bin
gdb path/to/python
# 进入debug 对话框口,
run python_script.py arg1 arg2
# 或
gdb -ex r --args python <programname>.py <arguments>
# 打断点
break your_script.py:10 或者 break function_name
############ debug core信息
gdb path/to/python path/to/core_file
#进入对话框后 执行bt
py-bt
# 如果进程已经开始运行,你可以通过 PID 来接入它:
gdb python <pid of running process>
- 如果python中有执行C++后端,则在编译python应用的时候,需要在build的时候带上debug信息,这样debug时,更能发现问题细节; 如果用bazel工具编译的,则:
# package中是编译C++后端并生成可用python调用的前端代码,使用pybind11来封装C++供python使用的
bazel build --strip=never --copt=-g --copt=-ggdb //path/to/package/...
# 然后执行上面的命令,开始debug python和它的后端C++
扩展阅读:
- python用pybind11扩展C++
- gdb的使用