bazel - bazel 宏存在哪些运行时调试/自省技术?
问题描述
我发现print
向我的 bazel 宏和规则实现添加一条语句会导致控制台输出添加到构建中,例如
DEBUG: /home/$USER/repo/source.bzl:82:5: message XYZ
我什至可以用标准的 Python 技术自省一些对象,比如......
def my_macro(my_list):
print(my_list)
print(type(my_list))
print(dir(my_list))
DEBUG: /home/$USER/repo/source.bzl:83:5: ["//visibility:public"]
DEBUG: /home/$USER/repo/source.bzl:84:5: list
DEBUG: /home/$USER/repo/source.bzl:85:5: ["append", "extend", "index", "insert", "pop", "remove"]
无论如何可以访问诸如在回溯模块中查看堆栈跟踪之类的东西,而不是什么?甚至可能像导入 pdb 并设置断点之类的东西?
解决方案
文档中有专门用于宏调试的 lil 部分
https://docs.bazel.build/versions/master/skylark/macros.html#debugging
您还可以使用 print 进行调试。
在明确指出 print 函数的地方,给出了一个方便的链接,它将您重定向到全局函数。
https://docs.bazel.build/versions/master/skylark/lib/globals.html
在那里您可以看到type
和dir
条目。没有看到任何面向堆栈跟踪的东西,只是一些用于探测当前调用堆栈上下文的技术。
推荐阅读
- verilog - Verilog 中的可综合算术移位
- database - 识别 is-a 关系中的强实体和弱实体
- css - 角度指令显示顺序
- keycloak - javax.ejb.EJBTransactionRolledbackException : 对于 keycloak 用户 spi 提供者
- maven - Leiningen 与 Maven 的关系是什么?
- javascript - Reactjs ES5 中的 react-webcam
- mongodb - How to extends MongoDB aggregation?
- r - Glove Word Mover 相似度
- java - 将 Docker 映像作为容器运行(适用于 Windows 用户)
- node.js - 如何在 TypeScript 中通过索引访问通用对象的属性?