2

我正在尝试调试 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 沙箱?

4

3 回答 3

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"

于 2019-10-17T13:05:38.607 回答
1
  • 以调试模式启动 CDAP 沙箱。
bin/cdap sandbox start --enable-debug
  • 在智能转到Run -> Edit Configurations -> Add New Configuration -> Remote
  • 指定配置名称,输入主机和端口(5005 用于调试 cdap)。
  • 在Use module classpath input configuration中选择您的 maven 模块并点击Apply

  • 现在调试点击调试按钮,你很高兴。

于 2019-10-18T06:23:09.700 回答
1

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

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

此外,您可能会发现我们的测试和调试文档很有帮助。

于 2018-10-31T16:41:14.360 回答