Linux 下如何调试 Python?

本文介绍在Linux命令行模式下使用pdb调试Python程序的方法。pdb是Python标准库提供的调试器,支持断点、单步执行等功能。文章提供两种使用方法及常见命令示例,适合在无图形界面环境下进行高效调试。

一般开发者都是在 IDE 中进行程序的调试,当然,有 IDE 的话,当然首选 IDE 进行调试。

但是,有时我们的业务场景,限制只能在 Linux 命令行模式进行调试。

这时该怎么办呢?

今天,就给大家介绍一个 Linux 下调试 Python 程序的工具。

pdb简介

pdb 调试器是 Python 标准库提供的,因此最为方便,不需要安装其他组件,直接 import 后就能使用。

pdb 调试器提供了调试所需的大多数功能,如断点、单行步进、堆栈帧的检查等等。

常用命令

l # 查看运行到哪行代码 
n # 单步运行,跳过函数 
s # 单步运行,可进入函数 
p 变量 # 查看变量值 
b 行号 # 断点设置到第几行 
b # 显示所有断点列表 
cl 断点号 # 删除某个断点 
cl # 删除所有断点 
c # 跳到下一个断点 
r # return 当前函数 
exit # 退出

使用示例

本文 Python 环境:Python 3.5.2

我们先准备一小段演示程序:

# -*- coding: utf-8 -*-

def add(a, b):
    return a + b

if __name__ == '__main__':
    print("===start===")
    c = add(1, 3)
    print("===end===")

使用方法 1

运行 pdb 的最简单方法是从命令行,将程序作为参数传递来调试。

$ python -m pdb test_pdb.py

这时,就开始单步执行了。

20190109161704.png

这种方法对代码没有侵入性,但是每次都需要设置断点。

使用方法 2

在代码头部引入 pdb,然后可以在代码里,通过 pdb.set_trace() 来设置断点:

# -*- coding: utf-8 -*-
import pdb

def add(a, b):
    pdb.set_trace()
    return a + b

if __name__ == '__main__':
        print("===start===")
        pdb.set_trace()
        c = add(1, 3)
        print("===end===")

此时,运行程序,就会自动跳转到设置的断点处:

20190109165557.png

总结

没了图形化页面,调试只能这么来了,不过还好,pdb 使用看着不难吧。

其实还有一些增强的调试器,比如 IPython 的 ipdb 和 pdb++,它们一般都提供了更好的用户体验,添加了有用的额外功能,例如语法突出高亮、更好的回溯和自省。

后面有机会再给大家分享吧!

转载于:https://www.cnblogs.com/hoxis/p/10287903.html

<think>我们正在讨论Linux系统中如何执行Python脚本或使用Python编程。根据引用内容,我们可以总结出几种方法: 1. 直接运行Python脚本(需要脚本有可执行权限和正确的shebang) 2. 使用Python解释器运行脚本 3. 交互式执行Python代码 4. 设置Python脚本随Linux开机自动运行(通过rc.local) 5. 使用cron定时执行Python脚本 下面将详细说明这些方法。</think>### Linux系统中执行Python脚本与编程指南 在Linux系统中执行Python脚本和使用Python编程有多种灵活方式,以下是详细方法: --- #### 1. **直接运行Python脚本** ```bash # 方法1:显式指定Python解释器 python3 your_script.py # 方法2:添加可执行权限后直接运行 chmod +x your_script.py # 添加执行权限 ./your_script.py # 直接执行 ``` **注意**:脚本首行需添加shebang声明解释器路径: ```python #!/usr/bin/env python3 # 推荐使用环境变量定位Python print("Hello Linux!") ``` --- #### 2. **交互式编程** 启动Python交互环境: ```bash python3 # 启动Python REPL >>> print(2**10) # 直接执行代码 1024 >>> import os >>> os.system('ls -l') # 执行Linux命令[^2] ``` --- #### 3. **定时执行脚本** 使用cron实现定时任务: ```bash # 编辑crontab crontab -e # 添加定时任务(示例:每天8:30执行) 30 8 * * * /usr/bin/python3 /path/to/script.py ``` 开机自启动脚本可编辑`/etc/rc.local`: ```bash sudo vim /etc/rc.local # 在exit 0前添加: /usr/bin/python3 /path/to/script.py & ``` --- #### 4. **脚本调试与错误处理** - **调试模式**: ```bash python3 -m pdb your_script.py # 进入调试器 ``` - **日志记录**: ```python import logging logging.basicConfig(filename='app.log', level=logging.INFO) logging.info('脚本启动') # 记录执行状态[^1] ``` --- #### 5. **系统命令集成** 在Python中执行Linux命令: ```python import subprocess # 捕获命令输出 result = subprocess.run(['ls', '-l'], capture_output=True, text=True) print(result.stdout) # 打印命令输出[^2] ``` --- ### 最佳实践建议 1. **虚拟环境**:使用`venv`隔离项目依赖 ```bash python3 -m venv myenv source myenv/bin/activate ``` 2. **路径处理**:使用`os.path`处理Linux路径 ```python import os config_path = os.path.expanduser('~/.config/myapp.conf') ``` 3. **权限管理**:敏感操作需`sudo`权限时,建议通过系统服务调用而非直接提权 > **示例场景**:创建每小时清理日志的定时任务 > ```bash > # crontab -e > 0 * * * * /usr/bin/python3 /opt/scripts/clean_logs.py > ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值