确实,运用断点调试程序相当容易,既快捷又清晰,然而在具体的项目构建过程中,时常会碰到诸如在Linux系统下调试程序,缺少专用工具辅助的情况,此时许多人或许会想到在代码中添加日志输出
调试代码时使用断点确实很便捷,操作简便且直观,但在实际项目运作中,常常会碰到一些困境,比如在Linux系统下调试程序,缺乏专用工具辅助时,许多人可能会选择在代码里输出日志信息以帮助排查问题,然而当代码体量庞大,变量数量众多时,通过日志追踪错误源头就会变得异常棘手,因此对于专业的程序员而言,熟练运用pdb进行调试是必不可少的一项技能
以Linux系统中的某个代码片段为例,具体说明如何运用pdb进行调试,必须先导入pdb模块,接着在需要调试的环节插入pdb.(),程序运行时会自动跳转到该调试点,接下来就从这个位置直接开始调试过程
在Linux环境下建立demo.py文档,里面包含以下信息 pdb
def (num):
sum=0
for i in range(num):
sum+=i
sum
if =="":
pdb.()
num=5
sum=(num)
print(sum)2 开始调试代码
通过命令行运行 demo.py 时,能发现一个箭头正对赋值语句,这个箭头说明该语句即将被执行,而箭头指向的地方还未被执行
root@ opt
# demo.py
> /opt/demo.py(13)()
-> num=5
(Pdb)
(2)输入小写字母 l 可以查看代码上下文 list:
(Pdb) l
sum
10
11if =="":
12pdb.()
13 ->num=5
14sum=(num)
(sum)
(Pdb)
借助 p xxx 能够显示 xxx 变量的内容,用以确认 xxx 变量此刻的状态,例如此处表明 num 还没有被分配数值
(Pdb) p num
*** : name 'num' is not
(Pdb)
(4)输入 n 执行下一步(next)
(Pdb) n
> /opt/demo.py(14)()
-> sum=(num)
(Pdb) p num
(Pdb)
当输入s时,会进入函数的执行步骤,此时若输入n,则不会触发函数的调用过程,而是直接完成函数调用那行代码的运行,输入s则可以继续在函数内部进行查看
(Pdb) s
--Call--
> /opt/demo.py(3)()
-> def (num):
(Pdb)
(6)此时可以不断的输入n或者p xxx 来调试查看变量
-> def (num):
(Pdb) n
> /opt/demo.py(4)()
-> sum=0
(Pdb) n
> /opt/demo.py(6)()
-> for i in range(num):
(Pdb) n
> /opt/demo.py(7)()
-> sum+=i
(Pdb) n
> /opt/demo.py(6)()
-> for i in range(num):
(Pdb) p sum
(Pdb) n
> /opt/demo.py(7)()
-> sum+=i
(Pdb) n
> /opt/demo.py(6)()
-> for i in range(num):
(Pdb) n
> /opt/demo.py(7)()
-> sum+=i
(Pdb) n
> /opt/demo.py(6)()
-> for i in range(num):
(Pdb) p sum
(Pdb) n
> /opt/demo.py(7)()
-> sum+=i
(Pdb) n
> /opt/demo.py(6)()
-> for i in range(num):
(Pdb) n
> /opt/demo.py(7)()
-> sum+=i
(Pdb) p sum
(Pdb) p i
(Pdb)
若当前觉得该程序已调试得较为完善,但实际运行尚未终止,可键入
r 回到函数调用完成的位置
(Pdb) r
----
> /opt/demo.py(8)()->10
-> sum
(Pdb) p sum
10
(Pdb)
如果此刻觉得调试已经顺利结束,打算停止,可以直接键入字母c,这样就能终止调试过程
(Pdb) c
10
root@ opt
上一篇:----魔法函数///的用法
扫一扫在手机端查看
- 上一篇:mysql行列转置报表_mysql 实现行列转置
- 下一篇:mysql set varchar VARCHAR长度选择_MySQL 中 Varchar(50) 和 varchar(500) 区别 90%的开发者踩过这个坑!
我们凭借多年的网站建设经验,坚持以“帮助中小企业实现网络营销化”为宗旨,累计为4000多家客户提供品质建站服务,得到了客户的一致好评。如果您有网站建设、网站改版、域名注册、主机空间、手机网站建设、网站备案等方面的需求,请立即点击咨询我们或拨打咨询热线: 13761152229,我们会详细为你一一解答你心中的疑难。


客服1