小编Ant*_*sse的帖子

验证bazel中的步骤

我正在寻找一个好的食谱运行"检查"或巴泽尔"验证"的步骤,如go vet,gofmt,pylint,cppcheck.这些步骤不会创建任何输出文件.唯一重要的是返回代码(如测试).

现在我正在使用以下配方:

sh_test(
    name = "verify-pylint",
    srcs = ["verify-pylint.sh"],
    data = ["//:all-srcs"],
)
Run Code Online (Sandbox Code Playgroud)

而且verify-pylint.sh看起来是这样的:

find . -name '*.py' | xargs pylint
Run Code Online (Sandbox Code Playgroud)

这有两个问题:

  • 验证逻辑在shell脚本和BUILD文件之间分开.理想情况下,我希望两者都在同一个地方(在BUILD文件中)
  • 只要其中一个源文件发生更改(in //:all-srcs),就会在每个文件上bazel test verify-pylint重新运行pylint(这可能很昂贵/很慢).

在bazel运行这些步骤的惯用方法是什么?

bazel

8
推荐指数
1
解决办法
391
查看次数

调试生产环境中的崩溃

首先,我应该给你一些背景信息。所讨论的程序是一个用 C++ 实现的相当典型的服务器应用程序。在整个项目以及所有底层库中,错误管理都是基于 C++ 异常的。

我的问题与处理不可恢复的错误和/或程序员错误有关——“未经检查的”Java 异常的松散等效项,因为需要更好的并行。我对在生产环境中处理此类情况的常见做法特别感兴趣。

特别是对于生产环境,在存在上述类型的错误时,两个相互冲突的目标显得尤为突出:易于调试和可用性(就操作性能而言)。其中每一项都依次提出了具体的策略:

  • 安装顶级异常处理程序来吸收所有未捕获的异常,从而确保持续可用性。不幸的是,这使得错误检查更加复杂,迫使程序员依赖细粒度的日志记录或其他代码“检测”技术。

  • 尽可能猛烈地碰撞;这使得人们能够通过核心转储对导致错误的情况进行事后分析。当然,我们必须提供一种方法让系统在崩溃后及时恢复运行,而这可能绝非小事。

所以我最终得到了两个不成熟的解决方案;我希望在服务可用性和调试设施之间取得折衷。我缺少什么?

注意:我已将问题标记为 C++ 特定问题,因为我对适用于该问题的解决方案和特性感兴趣;尽管如此,我知道与其他语言/环境会有相当大的重叠。

c++ debugging production

5
推荐指数
1
解决办法
1477
查看次数

标签 统计

bazel ×1

c++ ×1

debugging ×1

production ×1