代码编织梦想

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】多平台都有更新和发布,大家可以一键三连,关注+星标,不错过精彩内容~
在这里插入图片描述

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_33471732/article/details/129679701

[深入理解java虚拟机]第四章 虚拟机性能监控与故障处理工具-爱代码爱编程

理论总是作为指导实践的工具,能把这些知识应用到实际工作中才是 我们的最终目的。 给一个系统定位问题的时候,知识、经验是关键基础,数据是依据,工具是运用知识处理数据的手段。这里说的数据包括:运行日志、异常堆栈、GC日志、线程

linux学习总结—linux调度器分析_iteye_7465的博客-爱代码爱编程

四、Linux调度器分析1.Linux2.6调度器的特性2.6 调度系统从设计之初就把开发重点放在更好满足实时性和多处理机并行性上,并且基本实现了它的设计目标。新调度系统的特性概括为如下几点:继承和发扬 2.4 版调度器的特点: 交互式作业优先 轻载条件下调度/唤醒的高性能 公平共享 基于优先级调度 高 CPU 使用率 SMP 高效亲和 实时调度和 cpu

《java面试》7 - jvm22道题_刘超2012的博客-爱代码爱编程

JVM性能调优 如何优化Java GC jvm性能调优之工具说明 1. java内存模型和优化有做过哪些? 在Java语言中,采用的是共享内存模型来实现多线程之间的信息交换和数据同步的。线程之间通过共享程序公共

java 服务 容量评估,JVM容量评估及调优-爱代码爱编程

工具 Jmeter 基础使用和数据分析可以看这里->Jmeter接口测试+压力测试 JProfiler 这是一个非常直观的可以看到线程内存占用和gc活动概览的工具,也可以分析堆栈日志和线程,但是线程分析的不够细致只能看个大概,看不到线程栈。 PerfMa 这是一个可以分析heap、thread和jvm启动参数的社区网站,这个t

详解操作系统线程-爱代码爱编程

一、线程概述 1.1 为什么需要线程 一个应用通常需要同时处理很多独立的工作,同时执行的任务称为”执行流“,由于各个执行流是独立的,所以在多核CPU中,不希望他们是顺序执行的。 在《详解操作系统进程》的最后面,我们提到了创建子进程可以得到两个并发执行的流,能够并发完成不同的操作,早期,每个执行流都要创建一个进程来实现,但创建子进程的弊端是:父子

专家推荐面渣逆袭:JVM经典五十问,这下面试稳了-爱代码爱编程

1.什么是JVM? JVM——Java虚拟机,它是Java实现平台无关性的基石。 Java程序运行的时候,编译器将Java文件编译成平台无关的Java字节码文件(.class),接下来对应平台JVM对字节码文件进行解释,翻译成对应平台匹配的机器指令并运行。 同时JVM也是一个跨语言的平台,和语言无关,只和class的文件格式关联,任何语言,只要能

你想了解的性能测试,看这篇就够了_高阳很捷迅的博客-爱代码爱编程

结合日常工作,与性能测试相关的内容,主要通过三个部分展开: 接触性能测试JMeter快速入门性能测试全过程 1、接触性能测试 1.1定义及目的 性能测试:通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。我们听到较多的就是“压测”,压测属于性能测试。压力测试是通过确定一个系统的瓶颈或者不能接受的性能点,来获

keil5安装和使用小记-爱代码爱编程

随着keil版本的更新,一些使用问题一随之产生。本文针对安装目前最新版本keil软件和使用问题做一些总结。 目录 1 Keil5下载&安装1.1 官网下载链接1.2 软件安装1.2.1 安装说明1

java应用程序性能分析与调优实践_java在不同平台下的执行效率-爱代码爱编程

一、JVM基础 1、JVM简介 JVM是Java Virtual Machine(Java虚拟机)的英文简写,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。Java编程语言在引入了Java虚拟机后,使得Java应用程序可以在不同操作系统平台上运行,而不需要再次重新编译。Java编程语言通过使用Java虚拟机屏蔽了与具体操作系统平台相关的信息,保