You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

IntelliJ调试SBT应用失败:断点无法触发

解决IntelliJ调试SBT应用断点不触发的问题

你的问题核心在于:sbt -jvm-debug 5005 是给SBT自身的JVM进程开启了调试端口,但执行run命令时,应用是在一个独立的子JVM进程中启动的,这个子进程并没有绑定调试端口,所以IntelliJ的调试器无法关联到应用进程,断点自然不会触发。

下面是修正后的操作方案:

方法一:临时给run任务添加调试参数

  1. 直接在终端启动SBT,无需附加-jvm-debug参数:
    sbt
    
  2. 在SBT控制台中,执行带调试参数的启动命令:
    set javaOptions += "-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005"
    run
    
    也可以一次性组合执行:
    sbt -DjavaOptions="-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005" run
    
  3. 在IntelliJ中配置远程调试:
    • 打开Run/Debug Configurations → 点击+号 → 选择Remote JVM Debug
    • 将端口设置为5005,其余保持默认配置
  4. 点击IntelliJ的调试按钮,调试器会自动连接到应用进程,断点即可正常触发。

方法二:修改配置文件实现永久生效

如果不想每次启动都重复输入参数,可以修改项目根目录下的build.sbt,或者全局配置文件~/.sbt/1.0/global.sbt,添加以下内容:

fork in run := true
javaOptions in run += "-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005"

之后只需正常启动SBT并执行run命令,再用IntelliJ的远程调试配置连接即可。

额外提示

  • 如果将参数中的suspend=n改为suspend=y,应用会在启动时暂停,等待调试器连接后再继续运行,适合调试应用启动阶段的代码。
  • 确保IntelliJ远程调试配置的Host为localhost(同一机器运行时),且端口与命令中的address值完全一致。

内容的提问来源于stack exchange,提问作者Mandroid

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 20:20:26