VSCode调试Elixir时mix.exs的application函数内断点为何无效
VSCode调试Elixir项目时mix.exs配置行断点不命中的原因
断点不会触发的核心原因是你设置断点的位置不属于默认调试会话会监听的运行时代码,具体说明:
mix.exs是Mix构建工具读取的项目配置文件,其中application/0函数只会在Mix初始化任务、编译项目的极早期阶段执行一次,作用是返回应用的元配置数据。你打了断点的mod: {KV.Application, []},只是这个函数返回的关键字列表里的静态配置项,不是应用运行阶段会执行的逻辑。等调试器完成挂载、开始监听业务应用进程的时候,Mix早就把这行的配置值读取完毕了,自然不会在此处停留命中。- 你配置的
mod: {KV.Application, []}本质是告诉OTP运行时,应用启动的入口回调是KV.Application模块。如果要调试应用启动流程,应该把断点打在KV.Application模块内的start/2回调函数里,这个位置才是应用正式启动时一定会执行的运行时代码,断点可以正常触发。 - 如果你确实需要调试
application/0函数本身的执行逻辑,需要手动调整launch.json里的调试配置,让调试器提前挂载到Mix的初始化流程上。默认的Elixir项目调试配置只会监听业务应用的运行时代码,不会在Mix加载配置的早期阶段断点停留。
内容的提问来源于stack exchange,提问作者Chen Yu
相关产品推荐
相关产品推荐

