Как проанализировать неудачные сборки на этапе анализа? - PullRequest
0 голосов
/ 04 июня 2018

Бинарный двоичный файл, который я создаю, завершается неудачно на этапе анализа.Какие флаги и инструменты можно использовать для отладки, почему происходит сбой во время анализа.

В настоящее время чистые сборки возвращают следующий вывод

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

Если я повторяю сборку после неудачного завершения, я получаю следующееoutput

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

Какие флаги я могу использовать для определения

  • , какие пакеты загружаются
  • , в каком пакете прерывается сборка
  • происходит ли прерывание из-за тайм-аута или внешнего процесса.

По сути, что-то похожее на --verbose_failures, но для фазы анализа, а не для фразы выполнения.

До сих пор я выполнял сборку через профилировщик сборки и не былв состоянии собрать любую проницательность.Вот вывод моей сборки:

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 Ответ

0 голосов
/ 05 июня 2018

Используйте флаг запуска --host_jvm_debug для отладки самого Базеля во время сборки.

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

Отладка Базеля

Начните создавать конфигурацию отладки для C ++ и Java в вашем .bazelrc с помощью следующего:

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

Затем вы можете перестроить Bazel с помощью bazel build --config debug //src:bazel и использовать ваш любимый отладчик для запуска отладки.

Для отладки клиента C ++ вы можете просто запустить его с gdb или lldb, как обычно.Но если вы хотите отладить код Java, вы должны подключиться к серверу, используя следующую команду:

  • Запустить Bazel с опцией отладки --host_jvm_debug перед командой (например, bazel --batch --host_jvm_debug build //src:bazel).

  • Подключите отладчик к порту 5005.Например, с jdb запустите jdb -attach localhost:5005.В Eclipse используйте конфигурацию удаленного запуска Java-приложения.

  • Наш плагин IntelliJ имеет встроенную поддержку отладки
...