keil_rtx调试技巧
超级循环结构的程序调试一般依赖于断点,单步,查看变量和内存变量(keil中的Memory Window 或者 Watch window);而带微操作系统的程序由于加了这个中间层调试方法可能传统的有些区别,函数内部还可以用原始的方法调试,但任务级的则需要新的调试方法(有时候需要硬件调试器的支持)。
ARM cortex-M 系列的芯片其实有很强的CoreSight片上调试支持,实际上就是一个小的调试硬件,作为ARM的标准,内嵌在ARM的芯片里。在ARM自家的调试器ULINK-pro等的帮助下,可以实现代码覆盖率,代码剖析,代码性能分析等非常强大的调试功能。不同架构的Cortex-M系列的芯片支持不同的CoreSight部件。
作为ARM自家的软件开发工具,Keil自然也在调试方面有很多相应的支持。我们这里简单介绍一下Keil对RTX的支持,操作系统感知调试(OS-aware debugging)。主要有两个功能,一个是 系统和进程观察窗口 (System and Thread Viewer),另外一个是 事件窗口 (Event Viewer)。
System and Thread Viewer:在Debug菜单中的OS Support栏中,点选System and Thread Viewer(Periodic Window Update被点选才能看到实时的更新):它可提供提供了RTX系统的基本设置,例如堆栈大小,时间片设置等和进程的基本信息,例如进程ID,进程优先度,当前进程状态,进程的delay时间,进程等待的事件值和当前的事件值和堆栈的适用程度。这个窗口还会实时更新各个进程的状态。
事件窗口(Event Viewer):这个调试功能需要SWV(Serial Wire Viewer)支持:Target Option
->Debug ->Debugger选择栏右侧的Settings按钮:然后点选里面的Trace(跟踪)栏目,开启Trace,失能Periodic和EXCTRC选项
其余配置参考下图:

清晰记录了具体某一时刻,哪个进程在运行,和进程运行之间的切换。
如果你勾选开启右上角的3个小功能:Task Info, Cursor和 Show Cycles,然后再把鼠标移至任一进程,就会出现进程信息框
其他RTX调试技巧
RTX本身提供了一个功能,能够返回当前相对于os_sys_init()的那一刻时间(以RTX设置的时间单位为单位,初始时间是RTX开始Initialize的时间,也就是os_sys_init()的那一刻):current_time=os_time_get();
keil_rtx调试技巧的更多相关文章
- 【工具】VS2010常用调试技巧(1)
调试是一个程序员最基本的技能,其重要性不言自明.不会调试的程序员就意味着他即使会一门语言,却不能编制出好的软件.本文就本人在开发过程中常用的调试技巧作下简单呢介绍,希望对大家有所帮助,能力超群者请绕道 ...
- Visual Studio高级调试技巧
1. 设置软件断点,运行到目标位置启动调试器 方法①:使用汇编指令(注:x64 c++不支持嵌入汇编) _asm 方法②:编译器提供的方法 __debugbreak(); 方法③:使用windows ...
- 【转】你所不知道的Android Studio调试技巧
这篇写Android studio debug技巧个人觉得写得不错,转自:http://www.jianshu.com/p/011eb88f4e0d# Android Studio目前已经成为开发An ...
- VS调试技巧,提高调试效率(转):
如果你还没有使用过这些技巧,希望这篇博文能帮你发现它们. 它们学起来很容易,能帮你节省很多时间. 运行到光标(Ctrl+ F10) 我经常看见人们是这样来调试应用程序的: 他们在应用程序需要调试的代码 ...
- iOS各种调试技巧豪华套餐
转载自http://www.cnblogs.com/daiweilai/p/4421340.html 目录 前言 逼优鸡 知己知彼 百战不殆 抽刀断Bug 普通操作 全局断点(Global Break ...
- xcode调试技巧
xode报错有时挺无厘头,完全不知道哪里出的问题,最后还得用排除法,记录一些工作中认为有用的调试技巧 1.左侧视图点断点视图,左下角点加号,选择exception breakpoint,类型选c++, ...
- 你所不知道的Android Studio调试技巧
转载:http://www.jianshu.com/p/011eb88f4e0d Android Studio目前已经成为开发Android的主要工具,用熟了可谓相当顺手.作为开发者,调试并发现bug ...
- Visual Studio原生开发的20条调试技巧(下)
我的上篇文章<Vistual Studio原生开发的10个调试技巧>引发了很多人的兴趣,所以我决定跟大家分享更多的调试技巧.接下来你又能看到一些对于原生应用程序的很有帮助的调试技巧(接着上 ...
- Visual Studio原生开发的10个调试技巧
这篇文章只介绍了一些有关Visual Studio的基本调试技巧,但是还有其他一些同样有用的技巧.我整理了一些Visual Studio(至少在VS 2008下)原生开发的调试技巧.(如果你是工作在托 ...
随机推荐
- Jenkins安装部署及tomcat的入门介绍
这里我们使用的方法是用servlet容器来部署jenkins,使用的是tomcat 下载下来tomcat,解压 bin目录下存放的一些启动关闭批处理文件 conf目录下放的一些配置文件,配置虚拟主机之 ...
- TypeError: Unexpected keyword argument passed to optimizer: amsgrad原因及解决办法
原因: AMSgrad只支持2017年12月11日后发行的keras版本 解决办法: pip install --upgrade keras
- C++之友元机制(友元函数和友元类)
一.为什么引入友元机制? 总的来说就是为了让非成员函数即普通函数或其他类可以访问类的私有成员,这确实破坏了类的封装性和数据的隐蔽性,但为什么要这么做呢? (c++ primer:尽管友元被授予从外部访 ...
- Snmp在Windows下的实现----WinSNMP编程原理
在Windows 下实现SNMP协议的编程,可以采用Winsock接口,在161,162端口通过udp传送信息.在Windows 2000中,Microsoft已经封装了SNMP协议的实现,提供了一套 ...
- HDU1171(01背包均分问题)
Big Event in HDU Time Limit:5000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u De ...
- bzoj4804
莫比乌斯反演 我不会推线性筛 留坑
- bzoj4144
最短路+最小生成树 有点忘了... 这题只要判断能不能就行了 具体做法是把所有加油站放到堆里然后跑dij,然后把边权w=d[u]+d[v]+w,跑最小生成树 对于点对(x,y)是否能到达只要判断最大瓶 ...
- CS231n 2016 通关 第五、六章 Batch Normalization 作业
BN层在实际中应用广泛. 上一次总结了使得训练变得简单的方法,比如SGD+momentum RMSProp Adam,BN是另外的方法. cell 1 依旧是初始化设置 cell 2 读取cifar- ...
- java 内存管理机制
垃圾收集算法 1.标记清理算法:效率不高(标记和清理过程效率都不高).会形成内存碎片 2.复制算法:把内存分为两部分,当进行回收时,把使用部分的存活对象复制到未使用部分,然后两部分内存角色互换(一个为 ...
- python使用xlrd操作Excel文件
一.xlrd读取Excel文件 用xlrd进行读取比较方便,流程和平常手动操作Excel一样,打开工作簿(Workbook),选择工作表(sheets),然后操作单元格(cell). 例子:要打开当前 ...