我的工作区中有一个java_binary目标,稍后我会将其作为可执行文件传递到ctx.actions.run规则内部。到目前为止,一切都很好。
现在我想java_binary在 Bazel 执行规则时对其进行调试。为了附加调试器,我需要java_binary在调试模式下运行。到目前为止,我唯一想到的就是jvm_flags设置java_binary. 我能够让它发挥作用。但我想知道是否有一种方法可以从命令行实现它,而不是将其烘焙到java_binary.
java_binary(
...
jvm_flags = [
"-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=8000"
],
)
Run Code Online (Sandbox Code Playgroud)
是否可以从命令行实现这一点而无需硬编码jvm_flags?
尝试:
bazel run //:my-target -- --debug
Run Code Online (Sandbox Code Playgroud)
一种策略是使用 运行构建--subcommands,这将告诉 bazel 打印出构建期间运行的所有命令。java_binary然后找到与您感兴趣的调用相对应的命令行。然后您可以复制/粘贴该命令(包括该cd部分)并修改它以包含调试标志,并像调试任何其他进程一样调试它。
另请注意,java_binary输出一个包含标志的包装器脚本--debug[=<port>],因此这应该是需要添加到命令行的所有内容。
另请注意,--subcommands只会打印构建期间实际执行的命令,因此完全缓存/完全增量构建将不会打印任何内容。您可能需要执行clean或删除您感兴趣的操作的一些输出,以便 bazel 运行该命令。
| 归档时间: |
|
| 查看次数: |
3023 次 |
| 最近记录: |