打印
[其他ST产品]

stm32 keil MDK 仿真过程中变量地址如何查看?

[复制链接]
719|47
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
问题遇到的现象和发生背景
stm32 在mdk环境仿真过程中,变量加入watch,只能看到变量的值,类型等信息,没有变量地址信息。
虽然编译后生成的map文件能看到全局变量的地址,但是调试过程中,我想查一下局部变量的地址,看看是否会有栈溢出。



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

MDK软件版本:5.11


尝试过的解决方法

查看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 | 只看该作者
其实要看动态的变量的话,好像要选择一下数据更新这个,不然好像也是不变的

使用特权

评论回复
5
su1yirg| | 2024-2-29 15:42 | 只看该作者
确实,跟仿真器大致是无关的

使用特权

评论回复
6
q1d0mnx| | 2024-2-29 16:14 | 只看该作者
那你直接用IAR多好啊,就OK了

使用特权

评论回复
7
ClarkLLOTP| | 2024-2-29 16:51 | 只看该作者
仿真调试功能真好用

使用特权

评论回复
8
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仿真过程中查看变量的地址和值。这些功能可以帮助你调试程序并了解变量在内存中的位置。

使用特权

评论回复
9
w2nme1ai7| | 2024-2-29 17:13 | 只看该作者
你keil也可以像IAR一样,加入watch就可以变化

使用特权

评论回复
10
cen9ce| | 2024-2-29 18:27 | 只看该作者
变量的地址?不是变量本身的数据吗?

使用特权

评论回复
11
p0gon9y| | 2024-2-29 18:56 | 只看该作者
你要看地址的话,好像要看汇编的吧?

使用特权

评论回复
12
b5z1giu| | 2024-2-29 19:42 | 只看该作者
你这个map的话可以看到,但是在watch上好像是后面的类型里能看到吧

使用特权

评论回复
13
t1ngus4| | 2024-2-29 20:37 | 只看该作者
一般数据还可以添加到什么指针上还是啥上的,可以看到地址的

使用特权

评论回复
14
Henryko| | 2024-2-29 22:41 | 只看该作者
仿真调试时候选中就可以了

使用特权

评论回复
15
21mengnan| | 2024-2-29 22:56 | 只看该作者
调试很方便,可以看到寄存器的值。

使用特权

评论回复
16
Charlene沙| | 2024-2-29 23:04 | 只看该作者
用watch上看就行,添加到watch上

使用特权

评论回复
17
linfelix| | 2024-3-4 18:15 | 只看该作者
对于局部变量的地址,由于它们通常存储在栈上,所以在调试过程中,您可以使用上述方法(如"Go to Address")来查看它们的地址。不过请注意,由于栈的工作方式,局部变量的地址在每次函数调用时都可能发生变化。

使用特权

评论回复
18
1988020566| | 2024-3-5 09:02 | 只看该作者
在“Watch”窗口中,你还可以输入变量的表达式,并查看它们的计算结果。这对于复杂的变量或表达式特别有用。

使用特权

评论回复
19
lzmm| | 2024-3-5 11:35 | 只看该作者
用Keil的调试器功能,在Call Stack或Locals窗口查看栈中局部变量的地址。
全局变量和静态变量的地址可以通过查看Linker Map文件来确定,或者在初始化阶段使用指针打印地址。

使用特权

评论回复
20
1988020566| | 2024-3-5 17:18 | 只看该作者
在调试过程中,点击Debug视图中的“Watch”窗口(或者通过菜单View -> Watch Window打开)。

使用特权

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

本版积分规则

34

主题

416

帖子

1

粉丝