BEVFormer icon indicating copy to clipboard operation
BEVFormer copied to clipboard

pdb单步调试无法停在断点处

Open xuanzhangyang opened this issue 2 years ago • 9 comments

tools/dist_train.sh脚本中加上pdb: python -m pdb -m torch.distributed.launch ...

然后运行: ./tools/dist_train.sh ./projects/configs/bevformer/bevformer_base.py 1

加断点并运行:

(Pdb) b ./tools/train.py:145
Breakpoint 1 at /home/xuan/code/pytorch/BEVFormer/tools/train.py:145
(Pdb) r

无法停在断点处,而是直接就训练了,请问这个怎么单步调式?

xuanzhangyang avatar Jun 28 '22 02:06 xuanzhangyang

可以用embed替代断点。

from IPython import embed
embed()
exit()

zhiqi-li avatar Jun 28 '22 03:06 zhiqi-li

可以用embed替代断点。

from IPython import embed
embed()
exit()

我想通过单步调试来了解整个代码流程,想要使用embed做到这一点会非常麻烦。 pdb无法使用的主要是原因是使用了torch.distributed.launch, google了很多,没找到解决方法。

xuanzhangyang avatar Jun 28 '22 09:06 xuanzhangyang

@zhiqi-li

xuanzhangyang avatar Jun 28 '22 09:06 xuanzhangyang

知乎上有一位热心网友整理了代码的流程图,你可以参考。 bevformer代码解读 - Vidar的文章 - 知乎 https://zhuanlan.zhihu.com/p/529828000

zhiqi-li avatar Jun 28 '22 09:06 zhiqi-li

知乎上有一位热心网友整理了代码的流程图,你可以参考。 bevformer代码解读 - Vidar的文章 - 知乎 https://zhuanlan.zhihu.com/p/529828000

@zhiqi-li 感谢志琦大佬,我先看看。

xuanzhangyang avatar Jun 28 '22 11:06 xuanzhangyang

@zhiqi-li 大佬啥时候有空自己出一个代码流程梳理相关的博客,感觉用了mmdet3d框架后,代码难懂很多。

xuanzhangyang avatar Jun 28 '22 11:06 xuanzhangyang

@xuanzhangyang 把numworks设成0 用单卡可以pdb调试

Robertwyq avatar Aug 11 '22 02:08 Robertwyq

@Robertwyq numworks设成0这个我清楚,然后还需要自己修改代码把分布式训练的部分去掉?

xuanzhangyang avatar Oct 08 '22 03:10 xuanzhangyang

@Robertwyq numworks设成0这个我清楚,然后还需要自己修改代码把分布式训练的部分去掉?

你好 请问这个问题你解决了吗 我是pdb调试,然后调试的字母一直跳动

leijr avatar Oct 19 '23 13:10 leijr