BEVFormer
BEVFormer copied to clipboard
pdb单步调试无法停在断点处
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
无法停在断点处,而是直接就训练了,请问这个怎么单步调式?
可以用embed替代断点。
from IPython import embed
embed()
exit()
可以用embed替代断点。
from IPython import embed embed() exit()
我想通过单步调试来了解整个代码流程,想要使用embed做到这一点会非常麻烦。 pdb无法使用的主要是原因是使用了torch.distributed.launch, google了很多,没找到解决方法。
@zhiqi-li
知乎上有一位热心网友整理了代码的流程图,你可以参考。 bevformer代码解读 - Vidar的文章 - 知乎 https://zhuanlan.zhihu.com/p/529828000
知乎上有一位热心网友整理了代码的流程图,你可以参考。 bevformer代码解读 - Vidar的文章 - 知乎 https://zhuanlan.zhihu.com/p/529828000
@zhiqi-li 感谢志琦大佬,我先看看。
@zhiqi-li 大佬啥时候有空自己出一个代码流程梳理相关的博客,感觉用了mmdet3d框架后,代码难懂很多。
@xuanzhangyang 把numworks设成0 用单卡可以pdb调试
@Robertwyq numworks设成0这个我清楚,然后还需要自己修改代码把分布式训练的部分去掉?
@Robertwyq numworks设成0这个我清楚,然后还需要自己修改代码把分布式训练的部分去掉?
你好 请问这个问题你解决了吗 我是pdb调试,然后调试的字母一直跳动