[其他ST产品] stm32 keil MDK 仿真过程中变量地址如何查看?

[复制链接]
 楼主| 发给她更好fh 发表于 2024-2-26 23:52 | 显示全部楼层 |阅读模式
问题遇到的现象和发生背景
stm32 在mdk环境仿真过程中,变量加入watch,只能看到变量的值,类型等信息,没有变量地址信息。
虽然编译后生成的map文件能看到全局变量的地址,但是调试过程中,我想查一下局部变量的地址,看看是否会有栈溢出。

2855765dc540439f7f.png

操作环境、软件版本等信息

MDK软件版本:5.11

9224465dc541559a0f.png


尝试过的解决方法

查看option配置界面的debug页面,没有找到相关配置;并且在watch的界面也没找到相关设置。
我用的stlink仿真器,不确定是否与仿真器有关(个人觉得,大概率和仿真器无关)。

我想要达到的结果

像IAR一样加入watch的变量会显示变量值、类型和地址


kaif2n9j 发表于 2024-2-29 13:58 | 显示全部楼层
一般多是用watch这个可视窗来看的
d1ng2x 发表于 2024-2-29 14:26 | 显示全部楼层
你把变量放到watch里就好了,就能看了
y1n9an 发表于 2024-2-29 15:02 | 显示全部楼层
其实要看动态的变量的话,好像要选择一下数据更新这个,不然好像也是不变的
su1yirg 发表于 2024-2-29 15:42 | 显示全部楼层
确实,跟仿真器大致是无关的
q1d0mnx 发表于 2024-2-29 16:14 | 显示全部楼层
那你直接用IAR多好啊,就OK了
ClarkLLOTP 发表于 2024-2-29 16:51 | 显示全部楼层
仿真调试功能真好用
yiy 发表于 2024-2-29 16:57 | 显示全部楼层
在Keil µVision MDK仿真过程中查看变量地址的方法如下:

添加监视窗口:

在Keil µVision中打开你的工程。
转到“View”(视图)菜单,并选择“Serial Windows”(串行窗口)。
在串行窗口中选择“Watch1”或“Watch2”窗口。
在“Watch”窗口中,你可以添加你想要监视的变量。右键点击窗口,选择“Add Watch”(添加监视)。
在弹出的对话框中,输入你要监视的变量名称,然后点击“OK”。
查看变量地址:

在你添加了要监视的变量之后,Keil会在仿真过程中显示这些变量的值。
你可以右键点击变量,在上下文菜单中选择“Go to Address”(转到地址),这将会展示变量的地址。
使用内存窗口:

在“View”(视图)菜单中选择“Memory Window”(内存窗口)。
在弹出的对话框中,输入你想要查看的内存地址范围。
这样,你可以直接在内存窗口中查看变量的地址和值。
通过以上步骤,你可以在Keil µVision MDK仿真过程中查看变量的地址和值。这些功能可以帮助你调试程序并了解变量在内存中的位置。
w2nme1ai7 发表于 2024-2-29 17:13 | 显示全部楼层
你keil也可以像IAR一样,加入watch就可以变化
cen9ce 发表于 2024-2-29 18:27 | 显示全部楼层
变量的地址?不是变量本身的数据吗?
p0gon9y 发表于 2024-2-29 18:56 | 显示全部楼层
你要看地址的话,好像要看汇编的吧?
b5z1giu 发表于 2024-2-29 19:42 | 显示全部楼层
你这个map的话可以看到,但是在watch上好像是后面的类型里能看到吧
t1ngus4 发表于 2024-2-29 20:37 | 显示全部楼层
一般数据还可以添加到什么指针上还是啥上的,可以看到地址的
Henryko 发表于 2024-2-29 22:41 | 显示全部楼层
仿真调试时候选中就可以了
21mengnan 发表于 2024-2-29 22:56 | 显示全部楼层
调试很方便,可以看到寄存器的值。
Charlene沙 发表于 2024-2-29 23:04 | 显示全部楼层
用watch上看就行,添加到watch上
linfelix 发表于 2024-3-4 18:15 | 显示全部楼层
对于局部变量的地址,由于它们通常存储在栈上,所以在调试过程中,您可以使用上述方法(如"Go to Address")来查看它们的地址。不过请注意,由于栈的工作方式,局部变量的地址在每次函数调用时都可能发生变化。
1988020566 发表于 2024-3-5 09:02 | 显示全部楼层
在“Watch”窗口中,你还可以输入变量的表达式,并查看它们的计算结果。这对于复杂的变量或表达式特别有用。
lzmm 发表于 2024-3-5 11:35 | 显示全部楼层
用Keil的调试器功能,在Call Stack或Locals窗口查看栈中局部变量的地址。
全局变量和静态变量的地址可以通过查看Linker Map文件来确定,或者在初始化阶段使用指针打印地址。
1988020566 发表于 2024-3-5 17:18 | 显示全部楼层
在调试过程中,点击Debug视图中的“Watch”窗口(或者通过菜单View -> Watch Window打开)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

43

主题

563

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部

43

主题

563

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部