在Ubuntu系统中调试Python代码,可以采用以下几种技巧和工具:
print
语句def add(a, b):
print(f"Adding {a} and {b}") # 打印输入参数
result = a + b
print(f"Result: {result}") # 打印计算结果
return result
add(3, 5)
assert
语句assert
语句用于检查条件是否为真,如果不为真则抛出 AssertionError
。这有助于在开发过程中捕获错误假设。def divide(a, b):
assert b != 0, "除数不能为零" # 检查除数不为零
return a / b
divide(10, 2) # 正常情况
divide(10, 0) # 这会抛出 AssertionError
logging
模块logging
模块提供了更灵活的日志记录方式,适用于大型项目。import logging
logging.basicConfig(level=logging.DEBUG, format='%(asctime)s - %(levelname)s - %(message)s')
def multiply(a, b):
logging.debug(f"Multiplying {a} and {b}")
result = a * b
logging.debug(f"Result: {result}")
return result
multiply(4, 5)
pdb
调试器pdb
(Python Debugger)是一个强大的调试工具,可以逐步执行代码,检查变量值,设置断点等。import pdb
def factorial(n):
result = 1
for i in range(1, n + 1):
result *= i
pdb.set_trace() # 设置断点
return result
factorial(5)
ipdb
调试器ipdb
是 pdb
的增强版,提供了更友好的交互界面。import ipdb
def complex_function(a, b, c):
x = a + b
y = b * c
z = x - y
ipdb.set_trace() # 设置断点
return z
complex_function(3, 4, 5)
traceback
模块traceback
模块可以帮助你获取和打印详细的错误堆栈信息,适用于调试复杂问题。import traceback
def nested_function():
raise ValueError("这是一个错误")
def outer_function():
try:
nested_function()
except Exception as e:
print("捕获到异常:")
traceback.print_exc()
outer_function()
ptvsd
并运行 Python 程序。Python
和 Remote - SSH
。pdb
进行调试。python -m pdb hello.py
通过这些技巧和工具,你可以在 Ubuntu 系统中高效地调试 Python 代码,快速定位和解决问题。