I have a java_binary
target in my workspace that I'm later passing as an executable to ctx.actions.run
inside the rule. So far so good.
Now I want to debug this java_binary
while Bazel is executing the rule. In order to attach a debugger I need the java_binary
run in debug mode. So far, the only thing I came up with is setting jvm_flags
on the java_binary
. I was able to get that to work. But I was wondering if there is a way to achieve it from the command line instead of baking it into the java_binary
.
java_binary(
...
jvm_flags = [
"-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=8000"
],
)
Is it possible to achieve this from the command line without hard coding jvm_flags
?
It looks like you can pass the --jvm_flag
option as part of the program options after the --
.
BUILD:
java_binary(
name = "extract",
main_class = "com.pkg.Main",
resources = glob(["src/main/resources/**/*"]),
)
CLI:
bazel run //:extract -- --jvm_flag="-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=7942" -path %cd%\config.json
It seems that the --jvm_flag
option needs to come immediately after the --
, before the program options ( -path
in the example). This is with Bazel 3.7.0.
One strategy is to run the build with --subcommands
, which will tell bazel to print out all the commands it's running during the build. Then find the command line corresponding to the invocation of the java_binary
you're interested in. Then you can copy/paste that command (including the cd
part) and modify it to include the debug flags, and debug it as you would any other process.
Note also that java_binary
outputs a wrapper script that includes a --debug[=<port>]
flag, so that should be all that needs to be added to the command line.
Note also that --subcommands
will only print the commands that are actually executed during the build, so a fully cached / fully incremental build will print nothing. You may need to do a clean
, or delete some of the outputs of the action you're interested in so that bazel runs that command.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.