You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nuttx.apache.org by ar...@apache.org on 2021/12/29 04:10:02 UTC

[incubator-nuttx] 01/03: libs/dumpstack: add support for print symbol name

This is an automated email from the ASF dual-hosted git repository.

archer pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-nuttx.git

commit 7f2c5be07a8615d5d4b753b4991397e0b457e11a
Author: chao.an <an...@xiaomi.com>
AuthorDate: Tue Dec 7 21:12:42 2021 +0800

    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 <an...@xiaomi.com>
---
 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 39d2e0e..3f05af0 100644
--- a/libs/libc/sched/sched_dumpstack.c
+++ b/libs/libc/sched/sched_dumpstack.c
@@ -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
 }