Linux 下如何调试 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

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

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

使用方法 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===")

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

总结

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

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

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

原文地址:https://www.cnblogs.com/hoxis/p/10287903.html

时间: 2024-10-05 04:59:59

Linux 下如何调试 Python?的相关文章

Linux知识(5)----LINUX下GDB调试

参考资料: 1.LINUX下GDB调试

Linux下arm-none-eabi-gdb调试STM32

一.环境描述 硬件开发板:野火STM32开发板 下载器与调试接口:Jlink + JTAG 操作系统:虚拟机VMware6.5 + Ubuntu12.0.4 调试工具:arm-none-eabi-gdb 调试服务器:JLink GDB Server 调试工程目标文件:LED_Test.elf 二.步骤 1.安装Jlink驱动 参考Linux下STM32开发环境的搭建 2.安装交叉编译链arm-none-eabi-gcc 参考Linux下STM32开发环境的搭建 3.编译工程以生成elf文件 参考

Linux下gdb调试

关于gdb的其他客套话不多说,直接进入正题. 一.gdb基本命令列表: 命令 解释 简写 file 装入想要调试的可执行文件 无 list 列出产生执行文件源代码的一部分 l next 执行一行源代码但不进入函数内部 n step 执行一行源代码而且进入函数内部 s run 执行当前被调试的程序 r continue 继续执行程序 c quit 终止gdb q print 输出当前指定变量的值 p break 在代码里设置断点 b info break 查看设置断点的信息 ib delete 删

Linux 下编译安装 Python 3.4

Linux 下编译安装 Python 3.4 更新于 2014-09-24 02:01:05 UEANER 系统环境: CentOS 6.5 x86_64 / Fedora 20 x86_64 安装相关包 # yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make 下载 Python 3.4 源码包 # wget http://mirr

关于 Linux 下后台执行 Python 脚本的缓冲问题

[问题简述] 在 Linux 下后台执行 Python 脚本,重定向到日志文件,日志文件迟迟没有内容. [方案一](测试有效) nohup python3 -u t.py &> log.log & [方案一](测试无效) 方案二来自 stackoverflow,虽然测试无效,但其他地方也许会用到,记录一下. stdbuf -oL nohup python3 t.py &> log.log & *** walker *** 原文地址:http://blog.51c

linux下berkeley-db及python binding安装

1.下载源代码 shell > wget http://download.oracle.com/berkeley-db/db-5.3.21.tar.gz shell > wget http://pypi.python.org/packages/source/b/bsddb3/bsddb3-5.3.0.tar.gz#md5=d5aa4f293c4ea755e84383537f74be82 2, 解压缩,进入目录 3, 安装berkeley-db shell > cd build_unix/

linux下线程调试 ulimit core

在linux 下写线程程序的同学估计都遇到过找bug找到崩溃的情况,多线程情况下bug的追踪实在是不容易. 现在我来介绍一个好用的方法 ulimit core. 先简单介绍一下ulimit是个什么(你也可以man ulimit自己查看). "'当系统中的一些程序在遇到一些错误以及crash时,系统会自动产生core文件记录crash时刻系统信息,包括内存和寄存器信息,用以程序员日 后debug时可以使用.这些错误包括段错误.非法指令.总线错误或用户自己生成的退出信息等等,一般地,core文件在当

linux下dubbo调试 ---telnet命令

linux下启动dubbo服务端, 怎么调试? 方法有二: 1. 自己写简单消费者功能,进行各种情况测试.(这确实是有必要的) 2. 使用telnet直接连接上dubbo,使用命令调用,然后调试.(这是本文的初衷) 下面,主要介绍怎么用 Telnet 连接dubbo吧: 1. 查看提供者暴露的端口 2. 使用telnet登录dubbo,进行调用 3. 查看提供者都提供了什么服务,ls命令,ls com.cxxx.xxxx 4. 调用方法,invoke com.cxxx dubbo> invoke

linux下socket调试

在调试pcie板卡驱动的过程中由于要搭建测试环境,在web前端与pcie板卡之间采用socket进行通信.要测试的就是linux系统的pc机能发送一个文件给pcie板卡,然后再接收到pcie板卡处理后的文件. 工程是之前的同事留下的,没有交接.调试过程及出现的问题如下所述: (1)编译pcie驱动源码. (2)加载该驱动模块. (3)编译服务(测试环境)源码,包含socket server. (4)运行服务,运行了socket server. 该服务已经被添加到系统中,linux下查看服务的命令