You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用PDB远程调试时如何精准设置断点并跳过装饰器?及远程查看源码指定断点行方法

解决带装饰器函数的PDB断点问题

我之前调试Django带装饰器的视图函数时也踩过这个坑,给你两个靠谱的解决办法:

方法一:直接断点到被装饰的原函数

Django的login_required、csrf_protect这类装饰器都是通过functools.wraps实现的,它会把原始函数保存在被装饰函数的__wrapped__属性中。你只需要在PDB提示符下执行:

break views.like.__wrapped__

这个命令会直接跳过所有装饰器的包装代码,把断点设在like()函数的第一行,执行continue后就能直接进入目标函数调试了。

方法二:查看文件行号后精准设置断点

如果你想先确认like()函数在views.py中的具体行号,可以在PDB里执行shell命令快速定位:

!grep -n "def like" views.py

执行后会输出类似123: def like(request, comment_id, next=None):的结果,其中123就是函数定义的行号。接着用行号设置断点:

break views.py:123

这样断点就会直接定位到like()函数的定义处,不会触发装饰器代码的断点。

另外,你也可以在PDB里直接查看views.py的局部内容,用list命令指定文件和行号范围,比如:

list views.py:120,130

这会显示views.py中第120到130行的代码,方便你确认函数的具体位置。

内容的提问来源于stack exchange,提问作者Yan Tian

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.30 13:32:33