luke2022 发表于 2022-7-1 09:41:04

[结]main 函数地址不是0 但是为何调用堆栈窗口显示main地址是0?

本帖最后由 luke2022 于 2022-7-1 13:45 编辑

最近遇到一个调试的问题 因为调试时候要使用到 call stack 所以 注意到不自然的地方 .就是call stack 中main 的地址竟然是0 但是启动时候,main函数经过查证 是类似 0x08003ADD 之类的地址才对,那么为啥怎么可能是 在调用堆栈是 0 呢? 感谢各位大牛解惑,在下先谢过.

codefish 发表于 2022-7-1 11:02:59

发截图来看一下

luke2022 发表于 2022-7-1 12:13:14

本帖最后由 luke2022 于 2022-7-1 12:16 编辑

codefish 发表于 2022-7-1 11:02
发截图来看一下
(引用自2楼)

其实,我在多个芯片stm32 f103 hk030M 甚至 stm32 f030 好像都是一样. 感觉也不是特别耽误事.只是有点奇怪.

szjqt 发表于 2022-7-1 12:54:39

函数的保存地址和内存实际地址的区别吧

gzhuli 发表于 2022-7-1 13:00:30

0x0000 0000是根据BOOT引脚的设置映射不同地址过去的,Flash在0x0800 0000,但复位后的实际运行入口在0x0000 0000。

luke2022 发表于 2022-7-1 13:43:50

多谢楼上各位大佬指点, 这点之前真的没有注意到. 多谢多谢! 没想到是这种映射

zirong0804 发表于 2022-7-1 16:51:34

gzhuli 发表于 2022-7-1 13:00
0x0000 0000是根据BOOT引脚的设置映射不同地址过去的,Flash在0x0800 0000,但复位后的实际运行入口在0x000 ...
(引用自5楼)

0x0000 0000 是存放栈指针 MSP 的初始值,而楼主图中却显示main地址是 0x0000 0000 ?

孤独飞行 发表于 2022-7-4 08:58:13

C51进MAIN函数之前,有.A51文件的还会先进.A51.

2nd 发表于 2022-7-4 10:18:21

gzhuli 发表于 2022-7-1 13:00
0x0000 0000是根据BOOT引脚的设置映射不同地址过去的,Flash在0x0800 0000,但复位后的实际运行入口在0x000 ...
(引用自5楼)

芯片有这个设计,跟楼主的现象没关系啊

rube 发表于 2022-7-5 14:45:21

关注。。。。
页: [1]
查看完整版本: [结]main 函数地址不是0 但是为何调用堆栈窗口显示main地址是0?