代码之家  ›  专栏  ›  技术社区  ›  petros-eskinder

如何在分析阶段分析不成功的生成?

  •  2
  • petros-eskinder  · 技术社区  · 7 年前

    我正在构建的bazel二进制文件在分析阶段未成功完成。我可以使用什么标志和工具来调试分析期间失败的原因。

    当前,clean builds返回以下输出

    ERROR: build interrupted
    INFO: Elapsed time: 57.819 s
    FAILED: Build did NOT complete successfully (133 packages loaded)
    

    如果我在失败完成后重试构建,我将收到以下输出

    ERROR: build interrupted
    INFO: Elapsed time: 55.514 s
    FAILED: Build did NOT complete successfully (68 packages loaded)
    

    我可以用什么标志来识别

    • 正在加载哪些包
    • 正在中断生成的包
    • 中断是来自超时还是外部进程。

    本质上,类似于——冗长的失败,但用于分析阶段而不是执行阶段。

    到目前为止,我已经通过build profiler运行了我的构建,并且还没有收集到任何信息。以下是我的版本的输出:

    WARNING: This information is intended for consumption by Blaze developers only, and may change at any time.  Script against it at your own risk
    INFO: Loading /<>/result
    INFO: bazel profile for <> at Mon Jun 04 00:10:11 GMT 2018, build ID: <>, 49405 record(s)
    INFO: Aggregating task statistics
    
    === PHASE SUMMARY INFORMATION ===
    
    Total launch phase time         9.00 ms    0.02%
    Total init phase time           91.0 ms    0.16%
    Total loading phase time        1.345 s    2.30%
    Total analysis phase time      57.063 s   97.53%
    Total run time                 58.508 s  100.00%
    
    === INIT PHASE INFORMATION ===
    
    Total init phase time                    91.0 ms
    
    Total time (across all threads) spent on:
                  Type    Total    Count     Average
    
    === LOADING PHASE INFORMATION ===
    
    Total loading phase time                 1.345 s
    
    Total time (across all threads) spent on:
                  Type    Total    Count     Average
        CREATE_PACKAGE    0.67%        9     3.55 ms
              VFS_STAT    0.69%      605     0.05 ms
               VFS_DIR    0.96%      255     0.18 ms
              VFS_OPEN    2.02%        8     12.1 ms
              VFS_READ    0.00%        5     0.01 ms
              VFS_GLOB   23.74%     1220     0.93 ms
         SKYFRAME_EVAL   24.44%        3      389 ms
           SKYFUNCTION   36.95%     8443     0.21 ms
         SKYLARK_LEXER    0.19%       31     0.29 ms
        SKYLARK_PARSER    0.68%       31     1.04 ms
       SKYLARK_USER_FN    0.03%        5     0.27 ms
    SKYLARK_BUILTIN_FN    5.91%      349     0.81 ms
    
    === ANALYSIS PHASE INFORMATION ===
    
    Total analysis phase time               57.063 s
    
    Total time (across all threads) spent on:
                  Type    Total    Count     Average
        CREATE_PACKAGE    0.30%      138     3.96 ms
              VFS_STAT    0.05%     2381     0.03 ms
               VFS_DIR    0.19%     1020     0.35 ms
              VFS_OPEN    0.04%      128     0.61 ms
              VFS_READ    0.00%      128     0.01 ms
              VFS_GLOB    0.92%     3763     0.45 ms
         SKYFRAME_EVAL   31.13%        1    57.037 s
           SKYFUNCTION   65.21%    32328     3.70 ms
         SKYLARK_LEXER    0.01%      147     0.10 ms
        SKYLARK_PARSER    0.03%      147     0.39 ms
       SKYLARK_USER_FN    0.20%      343     1.08 ms
    

    就我的命令而言,我在奔跑

    bazel build src:MY_TARGET --embed_label MY_LABEL --stamp --show_loading_progress
    
    1 回复  |  直到 7 年前
        1
  •  1
  •   Jin    7 年前

    使用 --host_jvm_debug 在生成期间调试bazel本身的启动标志。

    https://bazel.build/contributing.html :

    调试bazel

    开始为C++和C++创建调试配置 你的爪哇 .bazelrc 包括以下内容:

    build:debug -c dbg
    build:debug --javacopt="-g"
    build:debug --copt="-g"
    build:debug --strip="never"
    

    然后你可以用 bazel build --config debug //src:bazel 并使用您喜欢的调试器开始调试。

    为了调试C++客户端,您可以从 gdb lldb 作为 你通常会的。但如果要调试Java代码,则必须 使用以下命令连接到服务器:

    • 使用调试选项运行bazel --主机调试 在命令之前(例如, bazel --batch --host_jvm_debug build //src:bazel )

    • 将调试器附加到端口 5005 . 用 jdb 例如,运行 jdb -attach localhost:5005 . 在eclipse中,使用 Java应用程序启动配置。

    • 我们的intellij插件有内置的调试支持