VS Code调试Django时如何忽略非关键异常以命中断点?
解决VS Code调试Django时非关键异常导致断点无法命中的问题
我之前调试Django时也碰到过一模一样的情况——明明设好了断点,结果每次都被一些无关紧要的异常打断,断点根本没机会命中。其实这是VS Code的Python调试器默认的异常处理逻辑在作祟,它会对所有抛出的异常(哪怕是被代码捕获处理的非关键异常)都暂停执行,直接打断了我们的调试流程。
要解决这个问题,只需要修改你launch.json里的Django调试配置,添加几个关键参数就行:
步骤1:修改调试配置
打开你的launch.json文件(点击左侧调试面板的齿轮图标就能快速打开),找到名为Python: Django的配置节点,在里面添加以下配置项:
"justMyCode": true, "exceptionHandling": { "raised": false, "uncaught": true }
修改后的完整Python: Django配置应该是这样的:
{ "name": "Python: Django", "type": "python", "request": "launch", "program": "${workspaceFolder}\\manage.py", "args": [ "runserver", "--noreload", "--nothreading" ], "django": true, "justMyCode": true, "exceptionHandling": { "raised": false, "uncaught": true } }
参数说明
justMyCode: 开启这个选项后,调试器会只关注你自己编写的代码,自动忽略第三方库(比如Django框架内部)抛出的异常——这些异常大多是非关键的,而且框架本身已经处理好了。exceptionHandling.raised: 设置为false后,调试器不会在任何被捕获的异常抛出时暂停;而uncaught设为true,则确保真正未被代码处理的严重异常还是会触发暂停,不会影响我们排查真正的问题。
如果你只想忽略特定模块的异常(比如只忽略Django相关的),也可以换成这个配置:
"exceptionHandling": { "ignore": ["django.*"] }
最后一步
保存修改后的launch.json,然后重启调试会话,你会发现那些烦人的非关键异常不会再打断调试了,设置的断点也能正常命中啦!
内容的提问来源于stack exchange,提问作者Omar Gonzales
相关产品推荐
相关产品推荐

