一、调试(在Linux中)
在 Linux 上运行 Python 程序时,可以使用断点进行调试。Python 提供了内建的调试工具 pdb
,通过它可以在代码中设置断点并进行逐步调试。以下是如何在 Linux 系统中使用 Python 和 pdb
调试代码的步骤:
1. 使用 pdb
设置断点
在你的 Python 代码中,导入 pdb
并使用 pdb.set_trace()
设置断点。例如:
import pdb
def some_function():
a = 10
b = 20
pdb.set_trace() # 断点位置
result = a + b
print(result)
some_function()
在运行时,代码将在 pdb.set_trace()
这一行暂停,进入交互式调试模式,你可以查看和修改变量值,逐行执行代码等。
2. 通过命令行运行 Python 程序
打开终端,进入你的 Python 脚本所在的目录,然后使用以下命令运行程序:
python3 your_script.py
当程序执行到 pdb.set_trace()
时,它会暂停并进入调试模式。你可以在终端中输入调试命令,例如:
n
(next):执行下一行代码s
(step):进入函数内部c
(continue):继续执行代码直到下一个断点q
(quit):退出调试器
3. 使用 python -m pdb
运行脚本
你也可以在命令行中直接使用 python -m pdb
来运行 Python 脚本并进入调试模式:
python3 -m pdb your_script.py
这会自动将程序加载到调试器中,并允许你在程序执行期间逐步调试。
4. 调试时常用命令
l
:显示当前位置附近的代码p <variable>
:打印变量的值q
:退出调试h
:查看帮助信息
二、pdb调试的增强版ipdb
安装 ipdb
首先,你需要安装 ipdb
,可以通过以下命令来安装:
pip install ipdb
使用 ipdb
ipdb
的使用方法与 pdb
类似,但它提供了更多增强的功能。例如,你可以在代码中直接插入 ipdb.set_trace()
来设置断点,并且进入调试模式时,会有更丰富的交互体验。
示例代码
import ipdb
def test_function():
a = 10
b = 20
ipdb.set_trace() # 设置断点
result = a + b
print(result)
test_function()
运行程序
在终端中,直接运行你的 Python 脚本:
python3 your_script.py
程序执行到 ipdb.set_trace()
处会暂停,并进入交互式调试模式。
常用命令
在 ipdb
调试模式下,你可以使用多种命令来检查和控制程序的执行。以下是一些常用的命令:
n
:执行下一行代码(next
),如果当前行有函数调用,则跳过函数内部。s
:进入当前行代码中的函数(step
)。c
:继续执行代码,直到下一个断点(continue
)。q
:退出调试器并结束程序(quit
)。p <variable>
:打印变量的值(print
),比如p a
会输出变量a
的值。l
:查看当前代码行和周围的代码(list
)。显示当前位置附近的源代码。h
:查看帮助信息,列出所有调试命令。!<expression>
:执行一个 Python 表达式,类似于 IPython 的行为。例如,你可以输入!a + b
来直接执行表达式。
交互式调试界面
ipdb
提供了类似于 IPython 的环境,这意味着你可以在调试时使用强大的 Python 表达式评估、变量操作和多行代码编辑等功能。你可以通过 !
执行复杂的 Python 表达式:
!print(a * b)
查看当前栈信息
ipdb
还提供了一些查看调用栈的功能:
where
或w
:显示当前的调用栈。up
:跳到上层栈帧。down
:跳到下层栈帧。
使用 ipdb
替代 pdb
的优势
- 更丰富的交互功能,支持执行 Python 表达式、查看变量、动态修改代码等。
- 提供了更好的代码高亮和调试界面。
- 支持更复杂的命令,如执行多行代码、条件断点等。
三、conda环境
1.conda环境中更新python版本
conda install python=x.y