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)}")

相关推荐
星空椰10 小时前
Python 面向对象高级:继承与类定义详解
开发语言·python
kyriewen10 小时前
微软用Go重写TypeScript编译器,速度提升10倍,网友:这是“背叛”还是“救赎”?
前端·typescript·ecmascript 6
白露与泡影10 小时前
2026大厂Java面试题大全!牛客网最新版
java·开发语言
Ceelog10 小时前
久坐党自救指南:屏幕前 8 小时,身体到底在经历什么
前端·后端
凯瑟琳.奥古斯特10 小时前
高阶子查询题目精炼
开发语言·数据库·python·职场和发展·数据库开发
西陵10 小时前
Agent 为什么会陷入 Doom Loop?OpenClaw 的破解之道
前端·人工智能·ai编程
雪度娃娃11 小时前
转向现代C++——在意为改写的函数添加 override
开发语言·c++
Hyyy11 小时前
普通前端续命周报——第2周
前端
swipe11 小时前
DeepAgents 实战:用多 Agent 架构搭一个深度调研助手
javascript·面试·llm
wuxinyan12311 小时前
工业级大模型学习之路030:Streamlit 企业级智能体前端工作台
前端·学习·streamlit·智能体