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

使用IntelliJ调试带EUnit的Erlang代码时测试套件取消原因排查

Erlang EUnit调试时「Test suite was cancelled」错误的原因分析

环境与问题描述

使用IntelliJ IDEA 2022.2.2调试包含EUnit测试用例的Erlang代码,设置断点后点击「Run → Debug」,出现「Test suite was cancelled」错误,执行命令及报错信息如下:

"C:\Program Files\Erlang OTP\bin\erl.exe" -pa C:\Users\bhu\AppData\Local\Temp\intellij_erlang_debugger_7789 -pa C:/Users/bhu/AppData/Local/Temp/eunit_teamcity9 -pa F:/1TB/P/workspace-IntelliJ-Erlang1/out/test/workspace-IntelliJ-Erlang1 -pa F:/1TB/P/workspace-IntelliJ-Erlang1 -run debugnode main 50067 -noshell -s init stop
Testing started at 20:59 ...
** Invalid beam file or no abstract code: "F:\\1TB\\P\\workspace-IntelliJ-Erlang1\\src\\my_sort.erl"
Test suite was cancelled. Reason: {abort,{module_not_found,my_sort}}

可能的原因

  • 模块未正确编译或BEAM文件缺失:报错中的「Invalid beam file or no abstract code」说明my_sort.erl对应的BEAM字节码文件不存在、损坏或未生成。可能是编译过程中触发语法错误,或是IDE自动编译功能未生效,导致没有生成可执行的BEAM文件。
  • 代码路径配置遗漏:启动命令通过-pa添加了多个路径,但my_sort模块的BEAM文件可能生成在未被添加的路径中(比如IntelliJ Erlang插件默认将生产代码编译到out/production目录,而命令里只添加了out/test和项目根目录),导致Erlang虚拟机找不到该模块。
  • 模块名与文件名不匹配:Erlang严格要求模块名和文件名完全一致(包括大小写),如果my_sort.erl文件内的模块声明是-module(MySort).或其他名称,会直接触发「module_not_found」错误。
  • 编译时未包含调试信息:Erlang调试需要模块携带抽象代码,编译时必须添加+debug_info参数。虽然IntelliJ调试时应自动添加该参数,但如果插件配置错误或编译流程被修改,生成的BEAM文件会缺失调试所需的抽象代码,进而引发此报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 17:30:11