Python多线程

Python线程调试

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(help)命令的演示-
# Filename : example.py
# Copyright : 2020 By Lidihuo
# Author by : www.lidihuo.com
# Date : 2020-08-22
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调试器时,我们可以使用以下几行在脚本的任何位置设置断点-
# Filename : example.py
# Copyright : 2020 By Lidihuo
# Author by : www.lidihuo.com
# Date : 2020-08-22
import pdb;
pdb.set_trace()
设置断点后,我们可以正常运行脚本。该脚本将执行到特定的时间点;直到设置了行。考虑以下示例,在该示例中,我们将通过在脚本的各个位置使用上述行来运行脚本-
# Filename : example.py
# Copyright : 2020 By Lidihuo
# Author by : www.lidihuo.com
# Date : 2020-08-22
import pdb;
a = "aaa"
pdb.set_trace()
b = "bbb"
c = "ccc"
final = a + b + c
print (final)
运行上述脚本后,它将执行程序直到a =" aaa",我们可以在以下输出中进行检查。

输出

# Filename : example.py
# Copyright : 2020 By Lidihuo
# Author by : www.lidihuo.com
# Date : 2020-08-22
--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",因此出现错误。
类似地,我们可以通过更改断点来运行脚本并查看输出中的差异-
# Filename : example.py
# Copyright : 2020 By Lidihuo
# Author by : www.lidihuo.com
# Date : 2020-08-22
import pdb
a = "aaa"
b = "bbb"
c = "ccc"
pdb.set_trace()
final = a + b + c
print (final)

输出

# Filename : example.py
# Copyright : 2020 By Lidihuo
# Author by : www.lidihuo.com
# Date : 2020-08-22
--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
在下面的脚本中,我们在程序的最后一行中设置断点-
# Filename : example.py
# Copyright : 2020 By Lidihuo
# Author by : www.lidihuo.com
# Date : 2020-08-22
import pdb
a = "aaa"
b = "bbb"
c = "ccc"
final = a + b + c
pdb.set_trace()
print (final)
输出如下-
# Filename : example.py
# Copyright : 2020 By Lidihuo
# Author by : www.lidihuo.com
# Date : 2020-08-22
--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)
昵称: 邮箱:
Copyright © 2022 立地货 All Rights Reserved.
备案号:京ICP备14037608号-4