调试
首先创建一个用于测试的 python 文件, 例如 mytest.py
- from numpy import linspace #注意这里写错了
- x = np.arange(5)
- np.empty_like(x)
运行 gdb 进行调试
gdb --args python runtests.py -g --python mytest.py
然后在 gdb 中设置断点后运行
- (gdb) break array_empty_like
- (gdb) run
numpy 的开发人员手册中完全是春秋笔法, 多余的话一句都没有, 非常言简意赅, 但是实际成功进行调试还是很困难的, 通过试验, 实现了原始 gdb 调试以及多种 GUI 前端的调试方式.
以下是具体环境和做法:
环境
调试这一类程序, 我首选的是 Linux, 因为各种所需的软件和运行库, 只要几条命令就可以了.
用虚拟机安装 Ubuntu 18.04.2 64bit, 该版本默认安装了 python 2.7 和 3.6.7, 这里主要使用 python 3.6.7, 所以文档里面使用 python 的地方需要改为 python3.
为了方便软件包的安装, 需要安装 pip3
sudo apt install python3-pip
测试
在克隆好的 numpy 的源代码目录中, 执行以下命令:
python runtests.py -v
如果命令失败, 可能是缺少一些软件包, 例如 cython, 使用如下命令进行安装
sudo apt install cython
gdb 调试
上述步骤正确之后, 可以使用官方提供的方法开始 gdb 的调试了, 但是 gdb 是一个完全命令行的调试器, 使用起来非常费力, 我还是习惯于图形界面的调试器.
首先创建一个用于测试的 python 文件, 例如 mytest.py, 注意官方文档写错了.
- import numpy as np
- x = np.arange(5)
- np.empty_like(x)
运行 gdb 进行调试
gdb --args python runtests.py -g --python mytest.py
来源: https://www.cnblogs.com/zhaoyipeng/p/10769906.html