首页 > 其他分享 >1823_ChibiOS的调试功能

1823_ChibiOS的调试功能

时间:2023-11-14 12:02:16浏览次数:41  
标签:检查 统计 1823 线程 内核 ChibiOS 调试


GreyZhang/g_ChibiOS: I found a new RTOS called ChibiOS and it seems interesting! (github.com)

1823_ChibiOS的调试功能_运行时间

1. 这里提到的调试,debug,跟测试工作本身是没有直接关系的。主要是为了保证开发以及实现上的保障来考虑的。

2. 所有的调试选项对于内核配置来说都是可访问的,这种设计应该是因为这样的选项会涉及到内核功能配置本身的变化。

3. 运行时的检查,可以在检查到问题的时候挂起系统,类似panic的功能。如果出现了这样的情况,可以按照一个推荐的步骤来检查:首先利用调试器暂停应用;其次,确认软件是否真的是停在了这样的接口上;第三,提取错误信息查看原因;第四,找到这个接口调用的触发点,通常来说条件会给我们解决问题提供很多的提示。

4. 接下来的一些内核的统计,可以提供一些参考信息让我们分析评估系统的行为。

1823_ChibiOS的调试功能_运行时间_02

1. 如果开启了内核的统计,每一个线程能够保存下来的时间相关的一些统计包括:线程运行的最长时间、线程运行的最短时间、线程上一次的运行时间、线程累计的运行时间。

2. 上面的这个时间统计是基于定时器来实现的,具体的精度与时钟的精度相同。

1823_ChibiOS的调试功能_驱动开发_03

1. 系统状态检查,主要能够查出来的问题是在当前的上下文中调用了该上下文不支持的API。

2. 这一页给出来了很多错误代码,而这些错误代码表征了不同上下文调用不合理API的问题。

1823_ChibiOS的调试功能_驱动开发_04

1. OS接口的一些函数的参数有一定的要求,开启这样的检查可以检查参数是否在合理范围内。比较典型的有,传入的指针参数不能够为NULL的时候但是错误传入了NULL。

2. 系统断言提供的不仅仅是一个状态检查,更重要的设计目的是实现了数据结构完整性的检查。

3. trace buffer,可以在系统异常的时候追踪一些错误的信息。可以通过几种不同的trace掩码设置来确定究竟捕捉哪些信息。

1823_ChibiOS的调试功能_RTOS_05

这里提到了一个检查用到的机制,对WA区域进行特殊数据的填充。这种填充的机制在FreeRTOS以及RT-Thread中我都是见过的。

1823_ChibiOS的调试功能_RTOS_06

Thread Profiling提供的功能主要是通过计数器来进行线程运行时间的统计,通过这样的统计可以知道线程执行的时候所占的时间权重。

以上就是ChibiOS中的调试功能支持的简单梳理,我觉得设计考虑还是很完善的。至少,并不是让人直面硬件的这种冰冷的交互,而是做到了很大程度上的意义抽象。这对于软件开发人员判断问题发生的效率是很有帮助的。

标签:检查,统计,1823,线程,内核,ChibiOS,调试
From: https://blog.51cto.com/greyzhang/8365203

相关文章

  • Net 高级调试之八:代码审查及杂项命令
    一、简介今天是《Net高级调试》的第八篇文章。这篇文章设计的内容挺多的,比如:如何查看方法的汇编代码,如何获取方法的描述符,对象同步块的转储,对象方法表的转储,托管堆和垃圾回收器信息的转储,CLR的版本,GC模式,等等,内容挺多的。内容虽然挺多,但是这些都是高级调试的基础。虽然......
  • LCD/HDMI 调试经验
     一、以两例芯片介绍驱动目的驱动是啥?从硬件上看就是以一定的规则让芯片运作起来,从软件上看就是一个或几个.c文件。拿一些显示信号转换芯片(9211,9611,96111uxc等等)来说,首先需要了解这类芯片的作用。生活中有各种不同的显示器,手机屏幕、电脑显示器、电视机等等,虽然都能显示同一画......
  • 无涯教程-Dart - 调试(Debug)
    开发人员时不时地在编码时犯错误,程序中的错误称为错误,查找和修复错误的过程称为调试,并且是开发过程中的正常部分,本节介绍可帮助您完成调试任务的工具和技术。添加断点考虑以下代码片段。(TestString.dart)voidmain(){inta=10,b=20,c=5;c=c*c*c;p......
  • Windows环境下ADB调试——无线连接设备Wifi adb
    一、有线连接第一次连接设备,需要先用有线连接一次。然后运行查看设备:adbdevices如图,第一次没有连接设备,第二次连接了。(安卓设备需要已经开启开发者模式)二、设置tcp端口运行代码:adbtcpip5555 三、无线连接打开安卓设备,查看IP地址。运行代码:adbconnect10.2......
  • 如何调试 Arduino® UNO R4 Minima
    本篇博客软件配置参考DebuggingtheArduinoUNOR4Minima|ArduinoDocumentation需要的工具硬件J-Link仿真器1.27mm排线转2.54mm排线母对母正向公对母杜邦线4根软件OzoneArduinoIDE硬件连线排线连接开发板1.27mm排线如图插入开发板注意:排线......
  • 让vs支持wsl调试
    WSL安装wsl--install-dUbuntu等一会提示输入用户名,不用管它,直接关闭,下次打开wsl,会以无密码的root用户打开wsl卸载wsl--unregisterUbuntu安装vs调试器下载vsdbg:https://vsdebugger.azureedge.net/vsdbg-17-7-10808-2/vsdbg-linux-x64.tar.gz下载:https://aka.ms/get......
  • GDB调试指令整理
    gdb基本指令单步调试n启动程序r执行到下一个断点处c进入函数s跳转到某一行指令until[行号]结束当前函数finish查看当前行附近代码l打印某一变量值p退出q设置断点b查看断点infob删除断点delete[断点号]查看线程infothread跳转线程thread[线程号]当......
  • vscode 如何调试 php 应用?
    使用的是WNMP的集成环境,服务启用后,如何用vscode对php代码进行断点调试?之前是使用PHPStorm进行断点调试的,想知道vscode能否实现类似的断点调试功能,。要在VSCode中调试PHP应用程序,你可以按照以下步骤进行设置和调试:安装PHP扩展:在VSCode的扩展市场中,搜索并安装PHP扩展......
  • STM32F103:SWJ调试接口设置成普通的IO口——PA13,PA14,PA15,PB3,PB4
    一、STM32调试端口STM32有两种程序调试接口,具体如下:SWD调试接口: PA13、PA14共两个引脚。JTAG调试接口: PA13、PA14、PA15、PB3、PB4共五个引脚。 单片机启动后,初始状态这五个引脚就默认是调试接口。而实际使用中,一般只使用SWCLK、SWDIO这两个引脚用做S......
  • JMeter进阶使用变量及BeanShell 预处理程序实现复杂调试
    JMeter进阶使用变量及BeanShell预处理程序实现复杂调试有一些测试需要做一些预处理程序才能做http请求,在JMeter下可以通过使用参数+BeanShell预处理程序加工后再发起请求即可。例oauth服务需要通过username,password,client_id,client_secret,grant_type进行请求,这里的密码涉及安......