零基础学习PDB命令行调试Python代码
admin
2023-07-31 01:43:08
0

你有多少次陷入不得不更改别人代码的境地?如果你是一个开发团队的一员,那么你遇到上述境地的次数比你想要的还要多。然而,Python中有一个整洁的调试特性(像其他大多数语言一样),在这种情况下使用非常方便。本文是一篇快速教程,希望它能让你的编码生活更加容易。

1. 一个混乱的程序

出于本教程的目的,让我们研究一下下面的简单程序。

这个程序接收两个命令行参数,然后执行加法和减法操作。

(假设用户输入的是有效值,因此代码中我们没有进行错误处理。)

1234567891011121314 import sysdef add(num1=0, num2=0):    return int(num1) + int(num2)def sub(num1=0, num2=0):    return int(num1) int(num2)def main():    #Assuming our inputs are valid numbers    print sys.argv    addition = add(sys.argv[1], sys.argv[2])    print addition    subtraction = sub(sys.argv[1], sys.argv[2])    print subtractionif __name__ == \’__main__\’:    main()

2. PDB

Python提供了一个有用的模块PDB,它实际上是一个交互式源代码调试器。

你需要下面的两行代码来使用此模块。

12 import pdbpdb.set_trace()

看一下我们修改过的程序,里面包含了一些断点。

12345678910111213141516 import pdbimport sysdef add(num1=0, num2=0):    return int(num1) + int(num2)def sub(num1=0, num2=0):    return int(num1) int(num2)def main():    #Assuming our inputs are valid numbers    print sys.argv    pdb.set_trace() # <– Break point added here    addition = add(sys.argv[1], sys.argv[2])    print addition    subtraction = sub(sys.argv[1], sys.argv[2])    print subtractionif __name__ == \’__main__\’:    main()

3. 程序执行触发调试器

一旦你设置好断点以后,你就可以像平时一样执行程序。

1 python debugger.py 1 2

程序将会在遇到的第一个断点处停止执行。

1234 [&#039;debugger.py']&gt; /Users/someuser/debugger.py(15)main()&gt; addition = add(sys.argv[1], sys.argv[2])(Pdb)

我们在第14行设置了一个断点,所以我们能看到将要执行的下一行是第15行。可以看到,在执行到第15行之前程序已经停止。

在这里我们有几个选项,让我们在下面步骤中看看一些调试指令。

4. 下一行->n

在你的调试器提示中,输入n运行到下一行。

ޗ不更改别人代码的境地?如果你是一个开发团队的一员,那么你遇到上述境地的次数比你想要的还要多。然而,Python中有一个整洁的调试特性(像其他大多数语言一样),在这种情况下使用非常方便。本文是一篇快速教程,希望它能让你的编码生活更加容易。

1. 一个混乱的程序

出于本教程的目的,让我们研究一下下面的简单程序。

这个程序接收两个命令行参数,然后执行加法和减法操作。

(假设用户输入的是有效值,因此代码中我们没有进行错误处理。)

1234567891011121314 import sysdef add(num1=0, num2=0):    return int(num1) + int(num2)def sub(num1=0, num2=0):    return int(num1) int(num2)def main():    #Assuming our inputs are valid numbers    print sys.argv    addition = add(sys.argv[1], sys.argv[2])    print addition    subtraction = sub(sys.argv[1], sys.argv[2])    print subtractionif __name__ == \’__main__\’:    main()

2. PDB

Python提供了一个有用的模块PDB,它实际上是一个交互式源代码调试器。

你需要下面的两行代码来使用此模块。

12 import pdbpdb.set_trace()

看一下我们修改过的程序,里面包含了一些断点。

12345678910111213141516 import pdbimport sysdef add(num1=0, num2=0):    return int(num1) + int(num2)def sub(num1=0, num2=0):    return int(num1) int(num2)def main():    #Assuming our inputs are valid numbers    print sys.argv    pdb.set_trace() # <– Break point added here    addition = add(sys.argv[1], sys.argv[2])    print addition    subtraction = sub(sys.argv[1], sys.argv[2])    print subtractionif __name__ == \’__main__\’:    main()

3. 程序执行触发调试器

一旦你设置好断点以后,你就可以像平时一样执行程序。

1 python debugger.py 1 2

程序将会在遇到的第一个断点处停止执行。

1234 [&#039;debugger.py']&gt; /Users/someuser/debugger.py(15)main()&gt; addition = add(sys.argv[1], sys.argv[2])(Pdb)

我们在第14行设置了一个断点,所以我们能看到将要执行的下一行是第15行。可以看到,在执行到第15行之前程序已经停止。

在这里我们有几个选项,让我们在下面步骤中看看一些调试指令。

4. 下一行->n

在你的调试器提示中,输入n运行到下一行。

ata-line=\”crayon-58127f42cbd1a762165284-1\”>12345

相关内容

热门资讯

Mobi、epub格式电子书如... 在wps里全局设置里有一个文件关联,打开,勾选电子书文件选项就可以了。
500 行 Python 代码... 语法分析器描述了一个句子的语法结构,用来帮助其他的应用进行推理。自然语言引入了很多意外的歧义,以我们...
定时清理删除C:\Progra... C:\Program Files (x86)下面很多scoped_dir开头的文件夹 写个批处理 定...
scoped_dir32_70... 一台虚拟机C盘总是莫名奇妙的空间用完,导致很多软件没法再运行。经过仔细检查发现是C:\Program...
65536是2的几次方 计算2... 65536是2的16次方:65536=2⁶ 65536是256的2次方:65536=256 6553...
小程序支付时提示:appid和... [Q]小程序支付时提示:appid和mch_id不匹配 [A]小程序和微信支付没有进行关联,访问“小...
pycparser 是一个用... `pycparser` 是一个用 Python 编写的 C 语言解析器。它可以用来解析 C 代码并构...
微信小程序使用slider实现... 众所周知哈,微信小程序里面的音频播放是没有进度条的,但最近有个项目呢,客户要求音频要有进度条控制,所...
Apache Doris 2.... 亲爱的社区小伙伴们,我们很高兴地向大家宣布,Apache Doris 2.0.0 版本已于...
python清除字符串里非数字... 本文实例讲述了python清除字符串里非数字字符的方法。分享给大家供大家参考。具体如下: impor...