stm32出现hardfault-自动化分析map文件

可通过如下python脚本进行分析:

import os

import sys

#在此输入HardFault_Handler时打印的PC指针

address = 0x20006980

#以下代码不要要更改

def is_hex(data):

try:

int(data, 16)

return True

except ValueError:

return False

def find_line_number(map_file, address):

line_number = None

linestring = ""

with open(map_file, 'r') as f:

line_num = 0

lines = f.readlines()

for line in lines:

line_num = line_num + 1

line = line.replace('\n', '').strip()

parts = line.split()

if len(parts) >= 3:

if is_hex(parts1) :

func_address = int(parts1, 16)

if func_address >= address:

line_number = str(line_num - 1) if func_address > address else str(line_num)

break

elif is_hex(parts2) :

func_address = int(parts2, 16)

if func_address >= address:

line_number = str(line_num - 1) if func_address > address else str(line_num)

break

linestring = line

return line_number, (linestring if func_address > address else line)

if name == "main":

script_path = os.path.dirname(os.path.realpath(file))

os.chdir(script_path)

map_file = '../Listings/SC_Func.map'

line_number, linestring = find_line_number(map_file, address)

if line_number:

print(f"Function at address: {hex(address)}, LineNumber: {line_number}")

print(f"Content: {linestring}")

else:

print(f"No function found at address {hex(address)}")

相关推荐
码哥DFS6 分钟前
二叉树的直径
开发语言·javascript·算法
paopaokaka_luck40 分钟前
基于springboot3+vue3的企业考勤管理系统(部门树递归、Echarts图形化分析)
开发语言·spring boot·学习·echarts·mybatis·需求分析·代码规范
badhope3382 小时前
当所有AI都在抄同一份作业:前端模板的趋同、困局与破局
前端·ai·ai编程·前端开发·tailwind·ui设计
梦雨生生2 小时前
java开发工具(学习第一天)
java·开发语言·学习
光影少年2 小时前
RN的Fabric 渲染流程
运维·前端·javascript·react native·react.js·fabric
__zRainy__3 小时前
React开始:直接在网站中使用React.js
前端·react.js·前端框架
啊啊啊啊啊!!!!3 小时前
【c++】stack和queue的接口使用以及底层实现
开发语言·c++
用户059540174463 小时前
大模型长记忆评测踩坑实录:2000条错位记忆,让我排查了整整3小时
前端·css
码林鼠3 小时前
webpack的基本配置
前端·webpack·node.js
用户938515635074 小时前
React Router 进阶:路由守卫、登录鉴权与状态传递
前端·javascript·全栈