From 7f2c5be07a8615d5d4b753b4991397e0b457e11a Mon Sep 17 00:00:00 2001 From: "chao.an" Date: Tue, 7 Dec 2021 21:12:42 +0800 Subject: [PATCH] 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 --- libs/libc/sched/sched_dumpstack.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/libs/libc/sched/sched_dumpstack.c b/libs/libc/sched/sched_dumpstack.c index 39d2e0e021..3f05af01ac 100644 --- a/libs/libc/sched/sched_dumpstack.c +++ b/libs/libc/sched/sched_dumpstack.c @@ -23,6 +23,7 @@ ****************************************************************************/ #include +#include #include @@ -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 }