mirror of
https://github.com/apache/nuttx.git
synced 2026-08-12 16:06:51 +00:00
Add dumpstack usage and configuration instructions Signed-off-by: yinshengkai <yinshengkai@bytedance.com>
94 lines
3 KiB
ReStructuredText
94 lines
3 KiB
ReStructuredText
========================================
|
|
``dumpstack`` Task Call Stack Backtrace
|
|
========================================
|
|
|
|
Description
|
|
-----------
|
|
|
|
The ``dumpstack`` application is a debugging utility that displays the call stack
|
|
backtrace information for one or more tasks (threads) in the NuttX system. It helps
|
|
developers understand the execution path and function call hierarchy of tasks, which
|
|
is particularly useful for debugging crashes, deadlocks, or abnormal behavior.
|
|
|
|
The application leverages the ``sched_dumpstack()`` function from the NuttX kernel
|
|
to retrieve and display backtrace information. Depending on the configuration, the
|
|
backtrace can display either raw memory addresses or symbolic function names.
|
|
|
|
Features
|
|
--------
|
|
|
|
* Dump backtrace for a single task by PID
|
|
* Dump backtrace for a range of tasks by PID range
|
|
* Support for symbolic backtrace display (requires ``CONFIG_ALLSYMS``)
|
|
|
|
Usage
|
|
-----
|
|
|
|
Basic Syntax
|
|
^^^^^^^^^^^^
|
|
|
|
.. code-block:: bash
|
|
|
|
dumpstack [start_pid] [end_pid]
|
|
|
|
**No arguments** - Dump backtrace of the current task:
|
|
|
|
.. code-block:: bash
|
|
|
|
nsh> dumpstack
|
|
|
|
**Single PID** - Dump backtrace of a specific task:
|
|
|
|
.. code-block:: bash
|
|
|
|
nsh> dumpstack 5
|
|
|
|
**PID range** - Dump backtrace of all tasks from start_pid to end_pid (inclusive):
|
|
|
|
.. code-block:: bash
|
|
|
|
nsh> dumpstack 3 10
|
|
|
|
Examples
|
|
^^^^^^^^
|
|
|
|
1. **Dump backtrace for tasks PID 4 to 6 (without CONFIG_ALLSYMS):**
|
|
|
|
.. code-block:: bash
|
|
|
|
nsh> dumpstack 4 6
|
|
sched_dumpstack: backtrace| 4: 0x0000000010024fe8 0x000000001000cccc 0x000000001002504c 0x000000001002759c 0x000000001002a870
|
|
sched_dumpstack: backtrace| 5: 0x0000000010024fe8 0x000000001000cccc 0x000000001002504c 0x000000001002759c 0x000000001002a870
|
|
sched_dumpstack: backtrace| 6: 0x000000001002bbb4 0x000000001002bd70 0x00000000100d3890 0x00000000100d3908 0x000000001005193c 0x000000001004fc74 0x0000000010051514 0x000000001005160c
|
|
sched_dumpstack: backtrace| 6: 0x0000000010051870 0x0000000010047fa8 0x000000001002cd50 0x000000001003d5ec 0x000000001002a888
|
|
|
|
2. **Dump backtrace for task PID 4 (with CONFIG_ALLSYMS enabled):**
|
|
|
|
.. code-block:: bash
|
|
|
|
nsh> dumpstack 4
|
|
sched_dumpstack: backtrace:
|
|
sched_dumpstack: [ 4] [<0x10025174>] nxsem_wait_slow+0x158/0x1ac
|
|
sched_dumpstack: [ 4] [<0x1000cccc>] nxsem_wait+0x94/0xb0
|
|
sched_dumpstack: [ 4] [<0x100251d8>] nxsem_wait_uninterruptible+0x10/0x2c
|
|
sched_dumpstack: [ 4] [<0x10027728>] work_thread+0x1b4/0x238
|
|
sched_dumpstack: [ 4] [<0x1002a9fc>] nxtask_start+0x7c/0xa4
|
|
|
|
Configuration
|
|
-------------
|
|
|
|
**CONFIG_SYSTEM_DUMPSTACK**
|
|
|
|
Dependencies
|
|
^^^^^^^^^^^^
|
|
|
|
The dumpstack application requires the following kernel configurations:
|
|
|
|
* **CONFIG_SCHED_BACKTRACE** - Must be enabled to provide the ``sched_backtrace()`` function
|
|
* **CONFIG_ALLSYMS** - Optional, enables symbolic function names in backtrace output
|
|
|
|
Limitations
|
|
-----------
|
|
|
|
* Maximum backtrace depth is 16 frames per iteration
|
|
* Some architectures may have limited or no backtrace support (known issue: sim environment cannot view stack of other threads)
|