| #!/bin/bash | |
| # Copyright 2019 The Fuchsia Authors. All rights reserved. | |
| # Use of this source code is governed by a BSD-style license that can be | |
| # found in the LICENSE file. | |
| #### CATEGORY=Build | |
| ### Collect Ninja trace information for analysis in chrome://tracing | |
| ## Usage: fx ninjatrace2json | |
| ## | |
| ## Use this after a build to write "ninjatrace.json" and | |
| ## "ninjatrace_critical_path.json" files in the build directories (separately | |
| ## for Zircon and Fuchsia build directories). Then use the chrome://tracing view | |
| ## to load that file into your browser. | |
| set -e | |
| source "$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)"/lib/vars.sh || exit $? | |
| fx-config-read | |
| TMP_DIR="$(mktemp -d)" | |
| readonly TMP_DIR | |
| trap 'rm -rf "${TMP_DIR}"' EXIT | |
| "${PREBUILT_NINJA}" -C "${FUCHSIA_BUILD_DIR}" -t compdb > "${TMP_DIR}/compdb.json" | |
| "${PREBUILT_NINJA}" -C "${FUCHSIA_BUILD_DIR}" -t graph > "${TMP_DIR}/graph.dot" | |
| "${HOST_OUT_DIR}/ninjatrace" \ | |
| -ninjalog "${FUCHSIA_BUILD_DIR}/.ninja_log" \ | |
| -compdb "${TMP_DIR}/compdb.json" \ | |
| -graph "${TMP_DIR}/graph.dot" \ | |
| -trace-json "${FUCHSIA_BUILD_DIR}/ninjatrace.json" \ | |
| -critical-path | |
| echo "Now visit chrome://tracing and load ${FUCHSIA_BUILD_DIR}/ninjatrace.json" |