使用CmBacktrace進行HardFault_Handler 追蹤
大家在用STM32的時候有沒有遇到過HardFault的問題呢:
下面針對這個問題做個小總結。
現象還原:在debug模式下進行模擬除錯,全速執行再停止執行,程式會跑到 HardFault_Handler函式中,產生 HardFault,即硬錯。其產生的原因大概有如下幾類:
(1)陣列越界操作;
(2)記憶體溢位,訪問越界;
(3)堆疊溢位,程式跑飛;
(4)中斷處理錯誤;
針對HardFault問題的定位,網上有幾種方法,大概都是圍繞著:在debug模式下,檢視一些地址,分析暫存器、函式呼叫棧等,這是很讓人頭疼的事情。這裡分享一種簡單的、直觀的HardFault錯誤定位的方法,使用開源庫:CmBacktrace 。這個庫之前已經有介紹過了,這篇筆記我們來實踐一下。
CmBacktrace簡介
CmBacktrace (Cortex Microcontroller Backtrace)是一款針對 ARM Cortex-M 系列 MCU 的錯誤程式碼自動追蹤、定位,錯誤原因自動分析的開源庫。主要特性如下:
- 支援的錯誤包括:
- 斷言(assert)
- 故障(Hard Fault, Memory Management Fault, Bus Fault, Usage Fault, Debug Fault)
- 故障原因 自動診斷 :可在故障發生時,自動分析出故障的原因,定位發生故障的程式碼位置,而無需再手動分析繁雜的故障暫存器;
- 適配 Cortex-M0/M3/M4/M7 MCU;
- 支援 IAR、KEIL、GCC 編譯器;
相關文章
- 使用Amazon Pinpoint對使用者行為追蹤
- Halo 正式開源: 使用可穿戴裝置進行開源健康追蹤
- 使用 CSS 追蹤使用者CSS
- Oracle執行語句跟蹤 使用sql trace實現語句追蹤OracleSQL
- 如何透過鏈路追蹤進行定時任務診斷
- 使用 SonarQube 追蹤程式碼問題
- 追蹤專案進展常用的衡量方法
- 如何使用專案問題追蹤軟體跟進管理專案
- 鏈路追蹤_SkyWalking的部署及使用
- .gitignore的使用---vendor是否應該追蹤Git
- 程式碼追蹤
- 日誌追蹤
- 鏈路追蹤
- Map、Debug追蹤
- Debug追蹤eclipseEclipse
- 追蹤使用者?只知道cookie可不夠Cookie
- OpenTelemetry分散式追蹤分散式
- skywalking鏈路追蹤
- 使用OpenCV進行ROS 2的循線跟蹤OpenCVROS
- 使用ErrorStack進行錯誤跟蹤及診斷Error
- SQLServer進行SQL跟蹤SQLServer
- 在WebGL中使用GLSL實現光線追蹤Web
- 企業使用專案追蹤有哪些挑戰?
- 如何用網頁尾本追蹤使用者網頁
- 微服務追蹤SQL(支援Isto管控下的gorm查詢追蹤)微服務SQLGoORM
- go的鏈路追蹤Go
- DHorse的鏈路追蹤
- 如何追蹤Java動態Java
- 如何追蹤Python動態Python
- 如何追蹤vue動態Vue
- 如何追蹤Go動態Go
- 如何追蹤laravel動態Laravel
- Spring Cloud 鏈路追蹤SpringCloud
- 追蹤解析 Disruptor 原始碼原始碼
- 追蹤解析 ThreadPoolExecutor 原始碼thread原始碼
- oracle 並行查詢時並行資源分配追蹤測試Oracle並行
- 使用mtrace追蹤JVM堆外記憶體洩露JVM記憶體洩露
- Centos7系統路由追蹤安裝使用教程。CentOS路由