有没有办法让pdb和Mac终端良好配合?

9 投票
3 回答
1840 浏览
提问于 2025-04-15 22:08

在调试我的Django应用时,我会用pdb这个工具来进行交互式调试,方法是使用pdb.set_trace()

不过,每当我修改一个文件时,本地的Django服务器会重启,这样我就看不到我在终端输入的内容,直到我输入reset

有没有办法让这个过程自动进行呢?每次都要取消运行服务器、重置再重新启动,真的很麻烦。我听说在其他操作系统(比如Ubuntu)上不会出现这种情况,那有没有办法让我的Mac上也不发生这种情况呢?(我用的是Snow Leopard)。

3 个回答

1

我找到的最好的方法是在pdb里面执行一个重置,像这样:

import os; os.system("reset");

1

在你保存文件更改之前,尽量先[q]退出pdb。这可以防止控制台出现问题,但只对这一次的pdb.set_trace()有效。

如果你忘记退出pdb,还是得用老办法:按下^C,然后输入reset,再运行./manage.py runserver。为了让重置过程不那么麻烦,可以把重置和启动服务器的命令放在一行里。这样,你只需要快速输入^Rreset或者按上箭头就能完成。

[ ... ]
Development server is running at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
^C$ reset && ./manage.py runserver
8

好的,这个方法对我有效。我创建了一个名为 ~/.pdbrc 的文件,并在里面添加了以下内容:

import os
os.system("stty sane")

现在每次运行 pdb 时,它都会把行设置恢复到正常状态。

如果我切换到终端,我还是需要手动设置一下,但这样就不用每次都退出运行服务器再重置了。

撰写回答