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(parts[1]) :

func_address = int(parts[1], 16)

if func_address >= address:

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

break

elif is_hex(parts[2]) :

func_address = int(parts[2], 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)}")

相关推荐
会游泳的石头3 分钟前
Java 异步事务完成后的监听器:原理、实现与应用场景
java·开发语言·数据库
Galloping-Vijay4 分钟前
解决 WSL2 + Windows Hosts + 开启 VPN 后无法访问本地 Web 服务的问题
前端·windows
黎雁·泠崖6 分钟前
Java字符串进阶:StringBuilder+StringJoiner
java·开发语言
我的offer在哪里8 分钟前
技术实战:用 Python 脚本高效采集与分析手机操作日志
开发语言·python·智能手机
不吃香菜的猪15 分钟前
使用@vue-office/pdf时,pdf展示不全
javascript·vue.js·pdf
wuhen_n21 分钟前
TypeScript的对象类型:interface vs type
前端·javascript·typescript
见路不走!22 分钟前
后端返回Blob文件流,前端实现导出
前端
lindd91191124 分钟前
4G模块应用,内网穿透,前端网页的制作第七讲(智能头盔数据上传至网页端)
前端·后端·零基础·rt-thread·实时操作系统·项目复刻
工程师00734 分钟前
C#中的AutoUpdater自动更新类
开发语言·c#·自动更新开源库·autoupdate
css趣多多34 分钟前
props,data函数,computed执行顺序
前端·javascript·vue.js