调试线程应用程序
管理员
Python并发编程教程
本文章向大家介绍调试线程应用程序,主要包括调试线程应用程序使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
在本章中,我们将学习如何调试线程应用程序。也将学习调试的重要性。
调试是什么?
在计算机编程中,调试是查找和消除计算机程序中的错误,错误和异常的过程。 这个过程在代码被写入后立即开始,并且随着代码与其他编程单元组合以形成软件产品而连续进行。 调试是软件测试过程的一部分,是整个软件开发生命周期的一个组成部分。
Python调试器
Python调试器(也叫pdb)是Python标准库的一部分。 这是一个很好的回退工具,用于追踪难以发现的错误,并允许我们快速可靠地修复错误的代码。 以下是 pdp 调试器的两个最重要的任务 -
- 它允许在运行时检查变量的值。
- 可以遍历代码并设置断点。
我们可以通过以下两种方式使用pdb:
- 通过命令行; 这也被称为事后调试。
- 通过交互式运行pdb。
使用pdb
要使用Python调试器,在想要进入调试器的位置使用以下代码 -
import pdb;
pdb.set_trace()
考虑以下命令通过命令行使用pdb。
- h(help)
- d(down)
- u(up)
- b(break)
- cl(clear)
- l(list))
- n(next))
- c(continue)
- s(step)
- r(return))
- b(break)
以下是Python调试器的h
(帮助)命令演示 -
import pdb
pdb.set_trace()
--Call--
>d:\programdata\lib\site-packages\ipython\core\displayhook.py(247)__call__()
-> def __call__(self, result = None):
(Pdb) h
Documented commands (type help <topic>):
========================================
EOF c d h list q rv undisplay
a cl debug help ll quit s unt
alias clear disable ignore longlist r source until
args commands display interact n restart step up
b condition down j next return tbreak w
break cont enable jump p retval u whatis
bt continue exit l pp run unalias where
Miscellaneous help topics:
==========================
exec pdb
示例
在使用Python调试器时,我们可以通过使用以下几行来在脚本中的任何位置设置断点 -
import pdb;
pdb.set_trace()
设置断点后,我们可以正常运行脚本。 该脚本将执行到某个断点; 直到设置了一行。 考虑以下示例,我们将通过在脚本中的各个位置使用上述行来运行脚本 -
import pdb;
a = "aaa"
pdb.set_trace()
b = "bbb"
c = "ccc"
final = a + b + c
print (final)
当上面的脚本运行时,它会执行程序直到a = "aaa"
,可以在下面的输出中查看它。
--Return--
> <ipython-input-7-8a7d1b5cc854>(3)<module>()->None
-> pdb.set_trace()
(Pdb) p a
'aaa'
(Pdb) p b
*** NameError: name 'b' is not defined
(Pdb) p c
*** NameError: name 'c' is not defined
在pdb中使用命令'p(print)'
后,此脚本仅打印'aaa'
。 随后出现错误,因为我们已将断点设置为a ="aaa"
。
同样,我们可以通过更改断点并查看输出中的差异来运行脚本 -
import pdb
a = "aaa"
b = "bbb"
c = "ccc"
pdb.set_trace()
final = a + b + c
print (final)
执行上面示例代码,得到以下结果 -
--Return--
> <ipython-input-9-a59ef5caf723>(5)<module>()->None
-> pdb.set_trace()
(Pdb) p a
'aaa'
(Pdb) p b
'bbb'
(Pdb) p c
'ccc'
(Pdb) p final
*** NameError: name 'final' is not defined
(Pdb) exit
在下面的脚本中,在程序的最后一行设置断点 -
import pdb
a = "aaa"
b = "bbb"
c = "ccc"
final = a + b + c
pdb.set_trace()
print (final)
执行上面代码,输出结果如下 -
--Return--
> <ipython-input-11-8019b029997d>(6)<module>()->None
-> pdb.set_trace()
(Pdb) p a
'aaa'
(Pdb) p b
'bbb'
(Pdb) p c
'ccc'
(Pdb) p final
'aaabbbccc'
(Pdb)