我深入研究了选项和源代码,但仍然不确定如何调试 bazel 构建,特别是 java。
也有人知道我如何更改 bazel,在本地构建它并在构建中使用它进行验证。我发现了 bazel 调用: exec -a "$0" "${BAZEL_REAL}" "$@">
其中BAZEL_REAL是二进制文件:/usr/local/Cellar/bazel/0.15.2/libexec/bin/bazel-real
但这并没有仔细解释它是如何开始的以及我如何调试它......
比如在构建代码时是否可以跳入并调试com.google.devtools.build.lib.bazel.rules.java.BazelJavaLibraryRule?就像我用Maven构建我的代码一样,我可以做mvnDebug。
bazel build -s
➜ bazel git:(master) ✗ bazel build //examples/java-native/src/main/java/com/example/myproject:hello-world -s
BAZEL_REAL==/usr/local/Cellar/bazel/0.15.2/libexec/bin/bazel-real
INFO: Analysed target //examples/java-native/src/main/java/com/example/myproject:hello-world (15 packages loaded).
INFO: Found 1 target...
Target //examples/java-native/src/main/java/com/example/myproject:hello-world up-to-date:
bazel-bin/examples/java-native/src/main/java/com/example/myproject/hello-world.jar
bazel-bin/examples/java-native/src/main/java/com/example/myproject/hello-world
INFO: Elapsed time: 4.943s, Critical Path: 0.29s
INFO: 0 processes.
INFO: Build completed successfully, 2 total actions
没关系,https://www.bazel.build/contributing.html#setting-up-your-coding-environment 有我需要的信息。
基本上是初学者
bazel --host_jvm_debug build //:*
参数的顺序很重要。例如,下面将不起作用
bazel build //:* --host_jvm_debug
要调试工作线程的 jvm,请使用 bazel build -s 获取命令,然后附加远程调试启动选项。