在Ubuntu系统中调试Python代码,可以采用以下几种技巧和工具:
1. 使用 print
语句
- 描述:这是最简单的调试方法,通过在代码的关键位置打印变量的值,可以帮助你了解程序的执行流程和数据状态。
- 示例:
def add(a, b): print(f"Adding {a} and {b}") # 打印输入参数 result = a + b print(f"Result: {result}") # 打印计算结果 return result add(3, 5)
2. 使用 assert
语句
- 描述:
assert
语句用于检查条件是否为真,如果不为真则抛出AssertionError
。这有助于在开发过程中捕获错误假设。 - 示例:
def divide(a, b): assert b != 0, "除数不能为零" # 检查除数不为零 return a / b divide(10, 2) # 正常情况 divide(10, 0) # 这会抛出 AssertionError
3. 使用 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)
4. 使用 pdb
调试器
- 描述:Python 自带的
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)
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)
6. 使用 IDE 内置调试工具
- 描述:现代 IDE(如 PyCharm、VSCode)提供了强大的调试工具,支持设置断点、单步执行、查看变量值等功能。
- 示例(PyCharm):
- 打开 PyCharm 并打开你的项目。
- 在右上角点击“Add Configuration”,选择“Python”。
- 在“Script path”中选择你的 Python 脚本文件,配置好参数和工作目录。
- 点击“OK”保存配置。
- 在代码中设置断点,点击工具栏上的绿色虫子图标启动调试器。
7. 使用 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()
8. 使用 VS Code 远程调试
- 描述:通过在 VS Code 中配置远程调试,可以在远程 Ubuntu 服务器上调试 Python 代码。
- 步骤:
- 在 Ubuntu 上安装
ptvsd
并运行 Python 程序。 - 在 VS Code 上安装扩展
Python
和Remote - SSH
。 - 在“Remote Explorer”中增加对远程机器的连接,选择“python 解释器”进行调试。
- 在 Ubuntu 上安装
9. 使用命令行调试
- 描述:在命令行中使用
pdb
进行调试。 - 示例:
python -m pdb hello.py
通过这些技巧和工具,你可以在 Ubuntu 系统中高效地调试 Python 代码,快速定位和解决问题。