rtthread查看每个线程堆栈使用峰值-爱代码爱编程
RT-Thread提供了一个名为rt_thread_stack_info
的函数,可以用来查看每个线程所使用过的最大堆栈。
该函数的原型如下:
void rt_thread_stack_info(rt_thread_t thread, rt_size_t *stack_used, rt_size_t *stack_size, rt_size_t *stack_peak);
其中,thread
参数是要查询的线程对象,stack_used
参数是用来存储已使用的堆栈大小的指针,stack_size
参数是用来存储总堆栈大小的指针,stack_peak
参数是用来存储堆栈使用的峰值大小的指针。
以下是一个示例代码,用来遍历所有线程并输出它们的堆栈信息:
void list_thread_stack_info(void)
{
rt_thread_t thread;
rt_list_t *node;
rt_size_t stack_used, stack_size, stack_peak;
rt_kprintf("Thread Name\tStack Used\tStack Size\tStack Peak\n");
/* 遍历所有线程 */
for (node = rt_thread_all_list.next; node != &rt_thread_all_list; node = node->next)
{
thread = rt_list_entry(node, struct rt_thread, tlist);
/* 获取堆栈信息 */
rt_thread_stack_info(thread, &stack_used, &stack_size, &stack_peak);
/* 输出堆栈信息 */
rt_kprintf("%s\t\t%d\t\t%d\t\t%d\n", thread->name, stack_used, stack_size, stack_peak);
}
}
该函数会输出所有线程的名称、已使用的堆栈大小、总堆栈大小和堆栈使用的峰值大小。
【最后一个bug】多平台都有更新和发布,大家可以一键三连,关注+星标,不错过精彩内容~