你有多少次陷入不得不更改别人代码的境地?如果你是一个开发团队的一员,那么你遇到上述境地的次数比你想要的还要多。然而,Python中有一个整洁的调试特性(像其他大多数语言一样),在这种情况下使用非常方便。本文是一篇快速教程,希望它能让你的编码生活更加容易。
出于本教程的目的,让我们研究一下下面的简单程序。
这个程序接收两个命令行参数,然后执行加法和减法操作。
(假设用户输入的是有效值,因此代码中我们没有进行错误处理。)
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() |
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() |
一旦你设置好断点以后,你就可以像平时一样执行程序。
1 | python debugger.py 1 2 |
程序将会在遇到的第一个断点处停止执行。
1234 | ['debugger.py']> /Users/someuser/debugger.py(15)main()–> addition = add(sys.argv[1], sys.argv[2])(Pdb) |
我们在第14行设置了一个断点,所以我们能看到将要执行的下一行是第15行。可以看到,在执行到第15行之前程序已经停止。
在这里我们有几个选项,让我们在下面步骤中看看一些调试指令。
在你的调试器提示中,输入n运行到下一行。
ޗ不更改别人代码的境地?如果你是一个开发团队的一员,那么你遇到上述境地的次数比你想要的还要多。然而,Python中有一个整洁的调试特性(像其他大多数语言一样),在这种情况下使用非常方便。本文是一篇快速教程,希望它能让你的编码生活更加容易。
1. 一个混乱的程序出于本教程的目的,让我们研究一下下面的简单程序。 这个程序接收两个命令行参数,然后执行加法和减法操作。 (假设用户输入的是有效值,因此代码中我们没有进行错误处理。)
2. PDBPython提供了一个有用的模块PDB,它实际上是一个交互式源代码调试器。 你需要下面的两行代码来使用此模块。
看一下我们修改过的程序,里面包含了一些断点。
3. 程序执行触发调试器一旦你设置好断点以后,你就可以像平时一样执行程序。
程序将会在遇到的第一个断点处停止执行。
我们在第14行设置了一个断点,所以我们能看到将要执行的下一行是第15行。可以看到,在执行到第15行之前程序已经停止。 在这里我们有几个选项,让我们在下面步骤中看看一些调试指令。 4. 下一行->n在你的调试器提示中,输入n运行到下一行。
|