linux调试python 博客分类: Python pythonlinux调试
程序员文章站
2024-03-13 11:23:30
...
python是动态语言,编译器检查不到运行时的语法问题,而这些低级问题常常造成调试效率很低。之前在linux服务器上调试,都是通过print和异常报错来排查,简直弱爆了。python内置的pdb正是调试的利器。
我们先新建一个测试脚本:
内容:
常用命令说明:
l #查看运行到哪行代码
n #单步运行,跳过函数
s #单步运行,可进入函数
p 变量 #查看变量值
b 行号 #断点设置到第几行
b #显示所有断点列表
cl 断点号 #删除某个断点
cl #删除所有断点
c #跳到下一个断点
r #return当前函数
exit #退出
更多的命令http://docs.python.org/library/pdb.html
调试过程:
我们先新建一个测试脚本:
touch debug.py
内容:
print "hello" i = 0 for j in range(10): i += j print i
常用命令说明:
l #查看运行到哪行代码
n #单步运行,跳过函数
s #单步运行,可进入函数
p 变量 #查看变量值
b 行号 #断点设置到第几行
b #显示所有断点列表
cl 断点号 #删除某个断点
cl #删除所有断点
c #跳到下一个断点
r #return当前函数
exit #退出
更多的命令http://docs.python.org/library/pdb.html
调试过程:
[co_ad2@localhost ~]$ python -m pdb debug.py > /home/co_ad2/debug.py(1)<module>() -> print "hello" (Pdb) l 1 -> print "hello" 2 3 i = 0 4 for j in range(10): 5 i += j 6 print i [EOF] (Pdb) n hello > /home/co_ad2/debug.py(3)<module>() -> i = 0 (Pdb) n > /home/co_ad2/debug.py(4)<module>() -> for j in range(10): (Pdb) n > /home/co_ad2/debug.py(5)<module>() -> i += j (Pdb) p i 0 (Pdb) p j 0 (Pdb) n > /home/co_ad2/debug.py(4)<module>() -> for j in range(10): (Pdb) n > /home/co_ad2/debug.py(5)<module>() -> i += j (Pdb) p i 0 (Pdb) p j 1 (Pdb) n > /home/co_ad2/debug.py(4)<module>() -> for j in range(10): (Pdb) n > /home/co_ad2/debug.py(5)<module>() -> i += j (Pdb) p i 1 (Pdb) p j 2 (Pdb) b 6 Breakpoint 1 at /home/co_ad2/debug.py:6 (Pdb) c > /home/co_ad2/debug.py(6)<module>() -> print i (Pdb) p i 45 (Pdb) n 45 --Return-- (Pdb) exit
推荐阅读
-
linux调试python 博客分类: Python pythonlinux调试
-
GDB调试实践二(gdb找不到动态库,对运行中的进程生成core文件) 博客分类: Linux调试Linux开发 GDB
-
gdb 命令脚本 博客分类: Linux调试 gdb
-
Python 安装 博客分类: Python pythonlinux
-
Python 安装 博客分类: Python pythonlinux
-
在linux下使用resin进行远程调试 博客分类: linux resin 远程调试
-
总结编程语言的空语句 博客分类: linux命令python 空语句空命令pythonshell
-
python 获取指定目录的属主 博客分类: pythonlinux命令 pythonlinux目录属主
-
python 获取指定目录的属主 博客分类: pythonlinux命令 pythonlinux目录属主
-
总结编程语言的空语句 博客分类: linux命令python 空语句空命令pythonshell