如何配置VS Code在Rails应用任意异常处中断(使用ruby-debug-ide与debase)
Rails配置异常自动触发VS Code断点操作步骤
你已经装完ruby-debug-ide和debase能正常启动调试的话,只需要两步配置就能实现异常抛出自动断:
开启调试面板的异常捕获开关
- 打开VS Code左侧「运行和调试」面板(快捷键
Ctrl+Shift+D/Cmd+Shift+D) - 展开面板里的「断点」分组,直接勾选两个选项:
- 未捕获异常:默认一般已勾选,异常没有被任何
rescue块接住时自动断 - 已捕获异常:勾选后哪怕异常被业务代码、框架层的
rescue兜住,抛出瞬间也会触发断点
- 未捕获异常:默认一般已勾选,异常没有被任何
- 这一步改完即时生效,下次启动调试就会按规则拦截异常。
(可选)关闭默认异常过滤,拦截所有类型异常
调试器默认会过滤掉Ruby、Rails内置的部分非致命异常(比如路由内部的路由匹配异常、部分参数解析异常),如果发现有异常没被拦截,改下调试配置即可:
- 打开项目根目录下的
.vscode/launch.json文件,找到你平时用的Rails启动配置项 - 在配置对象里添加两个参数,关闭内置过滤:
{ "name": "Rails server", "type": "Ruby", "request": "launch", "program": "${workspaceRoot}/bin/rails", "args": ["server", "-b", "0.0.0.0"], "useBundler": true, // 新增以下两行 "catchAllExceptions": true, "exceptionFilter": [] }
- 保存文件后重启调试会话,之后所有异常无论类型、是否被捕获,抛出时都会自动触发断点。
小提示
如果开启全量捕获后断点太频繁(比如业务里有主动抛异常再捕获的逻辑,比如权限校验、流控逻辑),不用关全局开关,直接在「断点」面板的异常排除列表里,把不想拦截的异常类名加进去就行,不会影响其他异常的拦截。
内容的提问来源于stack exchange,提问作者ndbroadbent
相关产品推荐
相关产品推荐

