【问题标题】:How to debug CDAP sandbox with IntelliJ on mac如何在 Mac 上使用 IntelliJ 调试 CDAP 沙箱
【发布时间】:2019-03-30 07:06:40
【问题描述】:

我正在尝试调试 CDAP 代码和插件代码

我尝试了几个选项来运行 CDAP 沙箱:

https://docs.cask.co/cdap/5.1.0-SNAPSHOT/en/developer-manual/getting-started/sandbox/docker.html

沙箱运行,粗壮的日志显示端口 5005 已暴露以供调试

Starting CDAP Sandbox ...Listening for transport dt_socket at address: 5005

docker ps 还有两个端口: 0.0.0.0:11011->11011/tcp, 0.0.0.0:11015->11015/tcp cdap-sandbox

当我将 IntelliJ 调试器配置为 11015 时,它似乎没有问题,但断点并没有捕捉到代码的运行。

我尝试在 virtualbox 上运行 CDAP 沙箱并使用 192.168.99.100,但我仍然无法使用远程调试器捕获断点

我还尝试将 5005 添加到暴露的 docker 端口 0.0.0.0:5005->5005/tcp 并配置 intellij 做同样的事情。 Intellij 无法连接到远程 5005

如何使用 intellij 调试 cdap 沙箱?

【问题讨论】:

    标签: docker virtualbox remote-debugging cdap


    【解决方案1】:

    您是否使用 --enable-debug 标志启动了 CDAP?

    我们的文档here 将帮助您在调试模式下启动 CDAP。

    此外,您可能会发现我们的 Testing and Debugging 文档很有帮助。

    【讨论】:

    • 我阅读了问题中的链接文档。调试器不附加。我可以调试的唯一方法是使用测试。
    【解决方案2】:

    问题在于 bin 目录中的 functions.sh 文件。默认情况下,它将监听端口绑定到 localhost。

    修复它:

    找线:

    "CDAP_SDK_OPTS+=" -agentlib:jdwp=transport=dt_socket,address=localhost:${__port},server=y,suspend=n"

    并将其更改为(删除localhost:):

    "CDAP_SDK_OPTS+=" -agentlib:jdwp=transport=dt_socket,address=${__port},server=y,suspend=n"

    【讨论】:

    • 好久没接触CDAP了,无法评价你的回答。
    • 加了github源码的链接,这样理解起来会更简单
    • 虽然我不是最初的提问者——这对我来说是缺失的部分。编辑完 functions.sh 文件后,我可以将远程调试器连接到 docker 容器中。
    【解决方案3】:
    • 以调试模式启动 CDAP 沙箱。
    bin/cdap sandbox start --enable-debug
    
    • 在 intelliJ 中转到 Run -> Edit Configurations -> Add New Configuration -> Remote
    • 指定配置名称,输入主机和端口(5005调试cdap)。
    • Use module classpath输入配置中选择你的maven模块并点击Apply

    • 现在要调试,点击 debug 按钮,一切顺利。

    【讨论】:

      猜你喜欢
      • 2013-06-20
      • 1970-01-01
      • 2021-07-12
      • 2021-11-24
      • 2012-07-26
      • 2013-07-14
      • 2017-05-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多