mirror of
https://github.com/oven-sh/bun
synced 2026-02-02 15:08:46 +00:00
chore: add script to trace allocations with Instruments (#16191)
This commit is contained in:
40
scripts/trace.sh
Normal file
40
scripts/trace.sh
Normal file
@@ -0,0 +1,40 @@
|
||||
#!/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
|
||||
Reference in New Issue
Block a user