mirror of
https://github.com/oven-sh/bun
synced 2026-02-02 15:08:46 +00:00
41 lines
1.3 KiB
Bash
41 lines
1.3 KiB
Bash
#!/bin/bash
|
|
|
|
# @file trace.sh
|
|
# @summary build + run bun with Instruments. All args are forwarded to `bun-debug`.
|
|
#
|
|
# @description
|
|
# This script builds bun, signs it with debug entitlements, and runs it with an
|
|
# Allocations template. After running, a `.trace` folder will be created. Open
|
|
# it with `open foo.trace` to view it in Instruments.
|
|
#
|
|
# This script requires xcode command line tools to be installed and only works
|
|
# on MacOS.
|
|
|
|
set -e -o pipefail
|
|
|
|
BUN="bun-debug"
|
|
DEBUG_BUN="build/debug/${BUN}"
|
|
|
|
file_to_run=$1
|
|
if [[ -z $file_to_run ]]; then
|
|
echo "Usage: $0 <file_to_run> [bun args]"
|
|
echo " $0 test <file_to_run> [bun args]"
|
|
exit 1
|
|
fi
|
|
|
|
bun run build
|
|
|
|
echo "Signing bun binary..."
|
|
codesign --entitlements $(realpath entitlements.debug.plist) --force --timestamp --sign - -vvvv --deep --strict ${DEBUG_BUN}
|
|
|
|
export BUN_JSC_logJITCodeForPerf=1
|
|
export BUN_JSC_collectExtraSamplingProfilerData=1
|
|
export BUN_JSC_sampleCCode=1
|
|
export BUN_JSC_alwaysGeneratePCToCodeOriginMap=1
|
|
|
|
echo "Tracing ${file_to_run}..."
|
|
xcrun xctrace record --template "Allocations" -output . --launch -- "./${DEBUG_BUN}" $file_to_run
|
|
# perf record -k 1 --sample-cpu -e cycles:u -j any --call-graph dwarf,16384 -F 499 -p (pgrep -f "${BUN}")
|
|
|
|
# DEBUGINFOD_URLS="" perf inject --jit --input perf.data --output=perf.jit.data -v
|