如何在IntelliJ IDEA中以调试模式运行Flutter build_runner命令并调试生成器代码?
调试Build Runner生成器的方法
我来帮你搞定调试生成器的问题!其实要给MyGenerator这类基于source_gen的生成器设置断点、调试运行非常简单,下面分步骤给你讲清楚:
1. 先在生成器代码里设置断点
先在你想要暂停调试的代码行上打个断点,比如你这段代码里的return语句处:
class MyGenerator extends GeneratorForAnnotation<Todo> { @override FutureOr<String> generateForAnnotatedElement( Element element, ConstantReader annotation, BuildStep buildStep ) { // 在这里打个断点(IDE里点击行号左侧即可) return "// Hey! Annotation found!"; } }
2. 选择合适的调试方式
方式一:用命令行启动调试模式
如果你习惯用命令行操作,可以通过Dart的调试观测器启动build_runner:
# 新版Dart(推荐) dart run --observe build_runner build # 旧版Dart(仍用pub命令的情况) pub run --observe build_runner build
执行命令后会输出一个调试URL(比如http://127.0.0.1:8181/),你可以用IDE连接这个URL进行后续调试。
方式二:IDE直接配置调试(更便捷)
VS Code
- 打开项目的
.vscode/launch.json文件(没有的话就新建一个) - 添加以下调试配置:
{ "version": "0.2.0", "configurations": [ { "name": "Debug Build Runner", "type": "dart", "request": "launch", "command": "build_runner", "args": ["build"], "cwd": "${workspaceFolder}" } ] }
- 保存后,在左侧「运行和调试」面板选中这个配置,点击启动按钮即可。当build_runner执行到你设置的断点时,会自动暂停。
IntelliJ/Android Studio
- 点击顶部菜单栏的「Run」→「Edit Configurations」
- 点击左上角的
+,选择「Dart Command Line App」 - 在「Name」栏填个标识名(比如
Debug Build Runner) - 在「Command」下拉框选择
build_runner,「Program arguments」填入build,「Working directory」选择项目根目录 - 点击「Apply」保存配置,然后点击调试按钮启动,断点触发时就会自动暂停。
小提示
- 调试前建议先清理build_runner的缓存,避免旧生成文件干扰调试:
dart run build_runner clean
- 确保你的生成器已经在
build.yaml或者注册文件里正确配置,不然build_runner找不到它,断点自然不会触发。
内容的提问来源于stack exchange,提问作者Ivan
相关产品推荐
相关产品推荐

