This is an automated email from the ASF dual-hosted git repository. ccollins pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/mynewt-core.git
The following commit(s) were added to refs/heads/master by this push: new e5f2545 compiler/gdbmacros: scripts to dump stacks e5f2545 is described below commit e5f2545492320296763850cfc20f275762fd3429 Author: Christopher Collins <ccoll...@apache.org> AuthorDate: Fri Feb 15 12:25:31 2019 -0800 compiler/gdbmacros: scripts to dump stacks This commit adds two public gdb scripts: usage: os_task_stack_dump <task> Dumps the specified task's stack, including symbol info. usage: os_task_stack_dump_all Dumps all task stacks, including symbol info. --- compiler/gdbmacros/os.gdb | 50 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) diff --git a/compiler/gdbmacros/os.gdb b/compiler/gdbmacros/os.gdb index e834d46..e83b9aa 100644 --- a/compiler/gdbmacros/os.gdb +++ b/compiler/gdbmacros/os.gdb @@ -71,3 +71,53 @@ document os_wakeups usage: os_wakeups Displays scheduled OS callouts, and next scheduled task wakeups end + +define os_stack_dump_range + set $start = (uintptr_t)$arg0 + set $num_words = $arg1 + + set $cur = 0 + while $cur < $num_words + set $addr = ((os_stack_t *)$start) + $cur + printf "0x%08x: ", $addr + x/a *$addr + + set $cur++ + end +end + +define os_task_stack_dump + set $task = $arg0 + + set $stackptr = $task.t_stackptr + set $num_words = $task.t_stacktop - $stackptr + + os_stack_dump_range $stackptr $num_words +end + +document os_task_stack_dump +usage: os_task_stack_dump <task> +Dumps the specified task's stack, including symbol info. +end + +define os_task_stack_dump_all + set $first = 1 + set $task = g_os_task_list.stqh_first + while $task != 0 + if $first + set $first = 0 + else + printf "\n" + end + + printf "[%s]\n", $task.t_name + os_task_stack_dump $task + + set $task = $task.t_os_task_list.stqe_next + end +end + +document os_task_stack_dump_all +usage: os_task_stack_dump_all +Dumps all task stacks, including symbol info. +end