libs/dumpstack: add support for print symbol name

ap> mw -1
[ EMERG] arm_usagefault: PANIC!!! Usage Fault:
[ EMERG] arm_usagefault:       IRQ: 6 regs: 0x3c24fa48
[ EMERG] arm_usagefault:       BASEPRI: 000000e0 PRIMASK: 00000000 IPSR: 00000006 CONTROL: 00000004
[ EMERG] arm_usagefault:       CFSR: 01000000 HFSR: 00000000 DFSR: 00000000 BFAR: 40101000 AFSR: 00000000
[ EMERG] arm_usagefault: Usage Fault Reason:
[ EMERG] arm_usagefault:       Unaligned access
[ EMERG] up_assert: Assertion failed at file:armv8-m/arm_usagefault.c line: 113 task: init
[ EMERG] backtrace|10:  0x2c325bde 0x2c319b98 0x2c3261cc 0x2c316b20 0x2c32699c 0x2c303a50 0x2c326072 0x2c3206ea
[ EMERG] backtrace|10:  0x2c3428cc 0x2c33ed14 0x2c342e8e 0x2c34403a 0x2c344ac0 0x2c319b60 0x2c3080ba
[ EMERG]  [10][ 0] [<0x2c325bde>] up_backtrace+0xa/0x13c
[ EMERG]  [10][ 1] [<0x2c319b98>] sched_dumpstack+0x10/0xc0
[ EMERG]  [10][ 2] [<0x2c3261cc>] up_assert+0x48/0x414
[ EMERG]  [10][ 3] [<0x2c316b20>] _assert+0x4/0x10
[ EMERG]  [10][ 4] [<0x2c32699c>] arm_usagefault+0xa8/0x138
[ EMERG]  [10][ 5] [<0x2c303a50>] irq_dispatch+0x1c/0x40
[ EMERG]  [10][ 6] [<0x2c326072>] arm_doirq+0x1a/0x2c
[ EMERG]  [10][ 7] [<0x2c3206ea>] exception_common+0x4a/0xac
[ EMERG]  [10][ 8] [<0x2c3428cc>] cmd_mw+0xec/0x11c
[ EMERG]  [10][ 9] [<0x2c33ed14>] nsh_parse_command+0x684/0xcf0
[ EMERG]  [10][10] [<0x2c342e8e>] nsh_session+0x92/0x168
[ EMERG]  [10][11] [<0x2c34403a>] nsh_consolemain+0x1e/0x38
[ EMERG]  [10][12] [<0x2c344ac0>] nsh_main+0x30/0x50
[ EMERG]  [10][13] [<0x2c319b60>] nxtask_startup+0x40/0x68
[ EMERG]  [10][14] [<0x2c3080ba>] nxtask_start+0x46/0x60

Signed-off-by: chao.an <anchao@xiaomi.com>
This commit is contained in:
chao.an 2021-12-07 21:12:42 +08:00 committed by archer
parent 20bbdd0997
commit 7f2c5be07a

View File

@ -23,6 +23,7 @@
****************************************************************************/
#include <nuttx/config.h>
#include <nuttx/allsyms.h>
#include <sys/types.h>
@ -52,8 +53,10 @@
void sched_dumpstack(pid_t tid)
{
FAR void *address[DUMP_DEPTH];
#ifndef CONFIG_ALLSYMS
char line[DUMP_LINESIZE + 1];
int ret = 0;
#endif
int size;
int i;
@ -63,6 +66,7 @@ void sched_dumpstack(pid_t tid)
return;
}
#ifndef CONFIG_ALLSYMS
for (i = 0; i < size; i++)
{
ret += snprintf(line + ret, sizeof(line) - ret,
@ -73,4 +77,12 @@ void sched_dumpstack(pid_t tid)
ret = 0;
}
}
#else
syslog(LOG_EMERG, "backtrace:\n");
for (i = 0; i < size; i++)
{
syslog(LOG_EMERG, "[%2d] [<%p>] %pS\n",
tid, address[i], address[i]);
}
#endif
}