打印
[STM32F0]

能否在调试器中设置一个记号,当内存空间被改写时触或标记该记号?

[复制链接]
248|16
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
地瓜patch|  楼主 | 2025-3-26 22:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
使用 keil仿真调试stm32f070时,遇到了一个问题,程序在内存空间中写入了无法识别的内容地址是0x20001FFC,这个写入内容不是我想要的,也不知是如何写进去的。

能否在调试器中设置一个记号,当内存空间被改写时触或标记该记号?或者记录该事件?

使用特权

评论回复
沙发
tpgf| | 2025-4-10 09:40 | 只看该作者
通过调试器设置硬件断点,当程序执行到该断点时,程序会暂停执行

使用特权

评论回复
板凳
Zuocidian| | 2025-4-14 19:41 | 只看该作者
单片机模拟EEPROM可以用于存储设备的固件程序

使用特权

评论回复
地板
Puchou| | 2025-4-14 20:56 | 只看该作者
插入特殊的指令来实现断点,但这种方式可能会占用一定的程序内存,且不是所有位置都适合设置软件断点

使用特权

评论回复
5
Xiashiqi| | 2025-4-14 22:03 | 只看该作者
将要监视的内存区域对应的变量添加到调试器的监视窗口中。这样,在程序运行过程中,可以实时观察到这些变量的值的变化

使用特权

评论回复
6
小海师| | 2025-4-15 08:08 | 只看该作者
有些调试器允许直接监视特定的内存区域。可以设置需要监视的内存起始地址和长度,当内存中的值发生变化时,调试器会发出提示或标记出来。

使用特权

评论回复
7
Haizangwang| | 2025-4-15 09:31 | 只看该作者
在程序运行过程中,定期(可以是每隔一段时间或在某些关键操作后)再次读取内存空间的内容,并与初始状态进行对比

使用特权

评论回复
8
温室雏菊| | 2025-4-24 01:25 | 只看该作者
Keil MDK 中调试 STM32F070 时,若发现 内存地址 0x20001FFC 被意外改写,可以通过设置内存写入断点(硬件断点)

使用特权

评论回复
9
失物招領| | 2025-4-24 02:27 | 只看该作者
连接调试器(如 ST-Link/J-Link),启动调试会话(点击 Debug 按钮)。添加内存访问断点:在 Memory Window 中输入地址 0x20001FFCAccess Type: 选择 Write(监控写入操作)。Size: 根据数据类型选择(如 Word 表示 4 字节)。点击 OK 保存。这样就可以

使用特权

评论回复
10
她已醉| | 2025-4-24 03:24 | 只看该作者
一般可以用断点的方式,比如说当程序向 0x20001FFC 写入数据时,CPU 会自动暂停,并跳转到触发该写入的代码位置

使用特权

评论回复
11
将爱藏于深海| | 2025-4-24 04:27 | 只看该作者
检查Call Stack窗口和反汇编视图,定位改写来源

使用特权

评论回复
12
春日负喧| | 2025-4-24 05:21 | 只看该作者
使用 Event Recorder 记录内存写入事件,适用场景:需记录写入事件,但不想暂停程序。需启用 CMSIS-EventRecorder 组件(需额外代码插入)

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1479

主题

13825

帖子

27

粉丝