直播公开课 | 单片机开发过程中的调试绝招第二课
韦东山
发布于 2022-7-7 14:08
浏览
4收藏
在上一次直播里,我们介绍了栈回溯、手工修改bin文件打断点,
我们还可以进一步改进:
- 栈回溯:修改异常处理函数自动分析栈,借助工具直接找出更具体的调用关系:哪个文件、哪一行
- 打断点:上一次课程里只能打一个断点,运行到断点时程序就崩溃。我们可以改进,修改bin文件打多个断点,修改异常处理函数让它打印信息后继续运行。
::: hljs-center
:::
::: hljs-center
:::
直播大咖
韦东山-15年嵌入式培训经验,涉及Linux、FreeRTOS、RT-Thread等,专注于嵌入式操作系统。
直播提纲
绝招1:栈回溯自动化改造
绝招2:实现多个断点:打印信息后继续运行程序
直播亮点
绝招1,揉合Linux、RT-Thread的栈回溯技术,给出一套适合所有裸机、RTOS程序的代码。
绝招2,这个方法是我首创的,曾经在中兴用来解决过一个Linux内核Bug,曾经在某大型机器人公司解决过一个栈溢出的Bug。
直播抽奖
10 块STM32F103-MINI开发板
适合人群
有单片机软件开发基础
分类
单片机开发过程中的调试绝招第 2 课课件.pdf 1.07M 189次下载
已于2022-7-8 11:49:54修改
赞
5
收藏 4
回复
相关推荐
前排支持韦老师!
make_ext4fs制作根文件系统时怎么配参数,传入的大小指的是什么?为什么目标文件是空的生成的镜像还是有三十几M
韦老师yyds!!
散列文件和连接用的lds文件有啥区别
1、韦老师,你好,请问怎么知道要在bin文件的那个位置打断点啊?
那个工具在哪下载呢?
栈回溯 相当于用外部软件实现的喽?
pop 到哪里,也是arm 官方的指令集文档有说明吗?刚刚老师看pop 指令的地方并没有看到呀
第二个技巧是要利用类似与pop 的指令吗?
栈回溯适合哪些类型的错误?
想看 写吧
发生异常的时候,硬件做的操作,保存那些寄存器,是哪里描述的,在哪里能找到
为什么swi栈是这个样子的,没有R4-R11?
栈帧整体上移的时候,返回地址的值不应该改成异常之前的返回地址吗?
奥,看到了,PC已经赋给svc的返回地址了~~
已经很牛了!
老师,这个原理可以再讲讲吗
那么函数参数多于4个,我也没有保存r4,为什么能运行呢?
PC指针的是我们自己保存的吗,没看到是哪里保存的
模拟指令的返回地址就是发生异常之前,也就是调用者里面的地址?