2021-01-14 09:39:38 +01:00
|
|
|
#!/usr/bin/env bash
|
|
|
|
############################################################################
|
|
|
|
# tools/esp32/btdecode.sh
|
|
|
|
#
|
2024-09-10 14:15:58 +02:00
|
|
|
# SPDX-License-Identifier: Apache-2.0
|
|
|
|
#
|
2021-01-14 09:39:38 +01:00
|
|
|
# Licensed to the Apache Software Foundation (ASF) under one or more
|
|
|
|
# contributor license agreements. See the NOTICE file distributed with
|
|
|
|
# this work for additional information regarding copyright ownership. The
|
|
|
|
# ASF licenses this file to you under the Apache License, Version 2.0 (the
|
|
|
|
# "License"); you may not use this file except in compliance with the
|
|
|
|
# License. You may obtain a copy of the License at
|
|
|
|
#
|
|
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
#
|
|
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
|
|
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
|
|
|
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
|
|
|
# License for the specific language governing permissions and limitations
|
|
|
|
# under the License.
|
|
|
|
#
|
|
|
|
############################################################################
|
|
|
|
|
|
|
|
# This script can be used to decode the backtrace that's dumped on assertions.
|
|
|
|
#
|
|
|
|
# On assertions we can find the raw backtrace dump similar to:
|
|
|
|
# ...
|
|
|
|
# xtensa_btdump: Backtrace0: 400d3ed7:3ffb1300
|
|
|
|
# xtensa_btdump: Backtrace1: 400d3f33:3ffb1320
|
|
|
|
# xtensa_btdump: Backtrace2: 400d2875:3ffb1340
|
|
|
|
# xtensa_btdump: BACKTRACE CONTINUES...
|
|
|
|
# ...
|
|
|
|
#
|
|
|
|
# Copy that to a file and call this script as:
|
|
|
|
# ./tools/esp32/btdecode.sh backtrace_file
|
|
|
|
#
|
|
|
|
# The result should be similar to the following:
|
|
|
|
# 0x400d3ed7: xtensa_assert at xtensa_assert.c:108
|
|
|
|
# 0x400d3f33: up_assert at xtensa_assert.c:184 (discriminator 2)
|
|
|
|
# 0x400d2875: _assert at lib_assert.c:36
|
|
|
|
|
|
|
|
USAGE="USAGE: ${0} backtrace_file"
|
|
|
|
|
|
|
|
# Make sure we have the required argument(s)
|
|
|
|
|
|
|
|
if [ -z "$1" ]; then
|
|
|
|
echo "No backtrace supplied!"
|
|
|
|
echo "$USAGE"
|
|
|
|
exit 1
|
|
|
|
fi
|
|
|
|
|
|
|
|
# Make sure the project was built
|
|
|
|
|
|
|
|
if [ ! -f nuttx ]; then
|
|
|
|
echo "NuttX binaries not found!"
|
|
|
|
exit 2
|
|
|
|
fi
|
|
|
|
|
|
|
|
# Check that the toolchain is in the PATH
|
|
|
|
|
|
|
|
if [ ! -x "$(command -v xtensa-esp32-elf-addr2line)" ]; then
|
|
|
|
echo "ESP32 toolchain not found!"
|
|
|
|
exit 3
|
|
|
|
fi
|
|
|
|
|
|
|
|
# Decode backtrace
|
|
|
|
|
|
|
|
for bt in `cat $1 | cut -d':' -f3`; do
|
|
|
|
xtensa-esp32-elf-addr2line -pfiaCs -e nuttx $bt
|
|
|
|
done
|
|
|
|
|