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

使用VSCode与Erlang LS本地调试RabbitMQ遇断点失效问题求助

解决RabbitMQ调试中ADP Server模块找不到的问题

针对你遇到的module not available (no_src)错误,以下是几个关键排查和修复步骤:

  • 编译时强制保留调试与源码关联信息
    用Bazel构建调试版时,必须添加--define=RABBITMQ_DEBUG=1参数来确保BEAM文件包含源码引用。完整构建命令应为:

    bazel run -c dbg --define=RABBITMQ_DEBUG=1 broker
    

    这个参数会让编译过程生成调试必需的.debug_info文件,没有它调试器无法关联模块与源码。

  • 确认源码路径与Erlang环境配置
    在launch.json中,确保env字段正确指向RabbitMQ的构建输出目录,示例配置:

    "env": {
      "ERL_LIBS": "/your/rabbitmq/repo/path/_build/dbg/lib"
    }
    

    同时检查Erlang LS的工作区设置,保证它能扫描到RabbitMQ所有子模块(如rabbit_common、rabbitmq_management等)的源码目录,避免仅扫描根目录导致子模块无法被识别。

  • 手动加载目标模块到调试节点
    启动调试节点后,若模块未自动加载,打开Erlang shell执行加载命令:

    l(rabbit_channel). % 替换为你要调试的模块名
    

    加载完成后重新设置断点,ADP Server即可识别到可用模块。

  • 验证Bazel构建输出文件
    检查_build/dbg/lib/[module_name]/ebin目录,确认同时存在.beam和.debug_info文件。如果缺少.debug_info,说明编译时调试信息未生成,需要清理构建缓存后重新执行带参数的编译命令:

    bazel clean
    bazel run -c dbg --define=RABBITMQ_DEBUG=1 broker
    
  • Make编译模式的专属配置
    用Make构建时,必须执行make debug而非普通make,该目标会自动开启调试编译选项。启动节点时使用:

    ./sbin/rabbitmq-server -debug
    

    确保节点以调试模式启动,加载完整的源码关联信息。

内容的提问来源于stack exchange,提问作者Lucas Weis Polesello

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 22:52:25