目录 | 上一节 (8.2 日志) | 下一节 (9 包)
8.3 调试
调试主张
假设程序溃散了:
bash % python3 blah.py
Traceback (most recent call last):
File "blah.github永久回家地址py", line 13, in ?
foo()
File "blah.py", line 10, in foo
bar()
File "blah.py", line 7, inappear bar
spam()
File "blah.py", 4, in spam
line x.append(3)
AttributeError: 'int' objeGitHubct has no attribute 'append'
那么现在该怎么办呢?
阅览回溯信息
最终一行是程序溃散的详细原因:
bash % python3 blah.py
Traceback (most recent call last):
File "blah.py", line 13, in ?
foo()
File "blah.py", line 10, in foo
bar()
File "blah.py", line 7, ingiti bar
spam()
File "blah.py", 4, in spam
line xgithub官网.append(3)
# Cause of the crash
Apython下载装置教程ttributeError: 'int' object has nappreciateo atgithub敞开私库tribute 'append'
不过,github是干什么的回溯信息并不总是那么易于阅览或了解。
专业主张:将整个回溯粘贴到谷歌。
运用交互式说冥具(REPL)
实施脚本的 时分,能够运用选项 -i
使 Python 保持存活(keep alive)。
bash % pytAPPhon3 -i blah.py
Traceback (most recent cappreciateall last):
File "blah.py", line 13, in ?
foo()
FilPythone "blah.py", lgit教程ine 10, iappearn foo
bar()
File "blagithub官网h.py", line 7, in baappler
spam()
File "blah.py", 4, in spam
line x.append(3)
AttributeError: 'int' object has no attribute 'append'
>>>
选项 -i
能够保存说冥具情况git指令。这意味着能够在程序溃散后查找错误信github敞开私库息。对变量的值和其它情况进行检查。
运用打印进行调试application
运用 prGitHubint()
函APP数进行调试非常常python下载装置教程见。
主张:保证运用git教程的是 repr()
函数。
def spam(x):
print('DEBUG:', repr(x))
...
repr()
函数闪现一个值的准确标明,而不是格局出色的输出。
>>> from decimal import Decpython保存字imal
>>>Python; x = Decimal('3.4github是干什么的')
# NO `repr`
>>> print(x)
3.4
# WITH `repr`apple
>>> print(rappearanceepr(x))
Decimal('3.4')
>application;>>
Pyappreciatethon 的调试器
能够在程序内手动发起调试器(debuggpython是什么意思er)。
def some_function():
...
breakpgithub直播渠道永久回家oint() # Enter the debugger (Pappearython 3.7+)
...
上述操作会在 breakpoint()
调用appear时发起调试器。
在 Python 的早期版别中,可能会看到下面这样的调试攻略:
import pdb
...
pdb.set_trace() # Instead of `bgithub中文官网网页reakppython123渠道登录oint()`
...
(译注apple:Python 3.7 之后,能够运用内置函数 breakpoint()
替代 import pdb; pdb.set_trace()
)
在调python基础教程试阐明github永久回家地址器下作业程序
也能够在调试器下作业整个程序:
bash % python3 -m pdb someprogram.py
上述操作会在第一行语句之前主动进入调试器,容许设置断点和批改配置。
常见的调试器指令:
(Pdb)github永久回家地址 help # Get help
(Pdb) w(hegithub敞开私库re) # Print stack trace
(Pdb) d(own) # Move down one stack level
(Pdb) u(p) # Move up one stack level
(Pdb) b(reak) loc # Set a breakpoint
(Pdb) s(tep) # Execute one instruction
(Pdb) c(ontinue) # Continue execution
(Pdb) l(ist) # List sourcpython编程e code
(Pdb) a(rgs) # Pgithub中文官网网页rint args of current function
(Pdb) !statement # Execute statement
断点的方位能够用下列恣意一种方法进行标明:
(Pdb) b 45 # Line 45 in current file
(Pdb) b file.py:45 # Line 34 in fpython保存字ile.py
(Pdb) b foo # Function foo() in current file
(Pdb) b module.fpython编程oo # Function fapp装置下载oo() in a module
练习
练习 8.4:Bugs? 什么是 Bugs?
有 bug,我们就解决 bug(It runs. Ship it!)。python是什么意思
目github官网录 | 上一节 (8.2 日志) | 下一节 (9 包)
注:完好翻译见 github.com/codists/pra…