我有一个复杂的
cc_test
,其中有规则中指定的大量参数和环境:
cc_test(
name="my_test",
args=[...tons of args...],
env= {...tons of envs...},
)
现在我想通过运行
./bazel-bin/my_test
来本地运行它,这样我就可以使用GDB来调试它。
问题是我需要复制并粘贴
args
和 env
手动形成规则,以获得完整的命令,例如:
ENV1=X ENV2=Y ./bazel-bin/my_test --args1=x --args2=y
这非常浪费时间。
有没有更快的方法来获取这个命令?或者还有其他更简单的方法来用 GDB 调试
cc_test
吗?
要准确查看 bazel 执行的操作以及执行方式,您可以使用
--subcommands
: https://bazel.build/docs/user-manual#subcommands
请注意,这还将打印为构建构建请求中的所有内容而执行的所有命令,因此可能有很多内容需要查看。但测试执行应该是最后一项。
还有
aquery
用于检查构建目标中的所有操作:https://bazel.build/query/aquery
还有
--run_under
:https://bazel.build/docs/user-manual#run_under。从这个讨论中:https://github.com/bazelbuild/bazel/issues/2815你会使用bazel run
而不是bazel test
:bazel run <test> --run_under='gdb --args'