123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- #!/usr/bin/env bash
- ############################################################################
- # tools/esp32/btdecode.sh
- #
- # 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
|