打印
[开发工具]

调试指针不跳转 0x00

[复制链接]
1076|20
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
updownq|  楼主 | 2024-7-17 23:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

在启动文件中更改堆栈大小:




比如图中是512k,可根据硬件情况将堆栈值改大一些。这个小操作目前解决了困扰我的三个问题:

(1)局部变量设置较多,调试时会在HardFault_Handler中的B.   处陷入死循环;

(2)仿真调试时,会在0x000000XX  Mov r0,r0附近一直爬啊爬,不跳转;

(3)仿真调试时,如果选择step over或者Run to Cursor line,,它在某些嵌套了好几层的函数的地方并不会乖乖滴跳过去,而是倔强地进入函数里面单步执行。


使用特权

评论回复
沙发
kzlzqi| | 2024-7-29 15:29 | 只看该作者
通常启动文件是一个汇编文件或者C文件,文件名可能是 startup_stm32f4xx.s、startup_stm32f4xx.c 或类似的名字,具体取决于您的开发环境和所使用的微控制器系列。

使用特权

评论回复
板凳
范德萨发额| | 2024-7-29 15:40 | 只看该作者
在调试时,如果程序陷入死循环或者不能跳转,通常是由于堆栈溢出或者堆栈损坏造成的。增加堆栈大小可以减少这种情况的发生,因为更大的堆栈空间可以容纳更多的局部变量和调用信息。

使用特权

评论回复
地板
elephant00| | 2024-7-29 21:33 | 只看该作者
指针未初始化

使用特权

评论回复
5
两只袜子| | 2024-7-29 21:33 | 只看该作者
程序中的逻辑错误可能导致指针未能按照预期的方式被修改。检查所有修改指针值的代码,确保逻辑正确无误。

使用特权

评论回复
6
jcky001| | 2024-7-29 21:34 | 只看该作者
调试器设置或错误

使用特权

评论回复
7
cr315| | 2024-7-29 21:34 | 只看该作者
如果其他部分的代码(如缓冲区溢出)损坏了内存,它可能会影响到指针的值。

使用特权

评论回复
8
申小林一号| | 2024-7-29 22:35 | 只看该作者
感谢分享

使用特权

评论回复
9
喂什么玩意| | 2024-7-31 11:42 | 只看该作者
根据硬件情况,将堆栈值改大一些。可以将堆栈大小从 2048 字节增加到 8192 字节:

使用特权

评论回复
10
AdaMaYun| | 2024-7-31 14:19 | 只看该作者
它在某些嵌套了好几层的函数的地方并不会乖乖滴跳过去,而是倔强地进入函数里面单步执行。

使用特权

评论回复
11
gaonaiweng| | 2024-8-29 12:15 | 只看该作者
如果您使用的是汇编启动文件,可以直接在其中找到定义堆栈大小的部分。

使用特权

评论回复
12
Wordsworth| | 2025-3-17 09:23 | 只看该作者
Step Over 变 Step Into 可能和编译优化有关,有时候优化后的代码和源码对不上。

使用特权

评论回复
13
Bblythe| | 2025-3-17 09:24 | 只看该作者
你用的是什么IDE?Keil、IAR 还是 STM32CubeIDE?不同工具可能处理堆栈的方法不一样。

使用特权

评论回复
14
Pulitzer| | 2025-3-17 09:25 | 只看该作者
解决HardFault问题除了增大堆栈,还有没有其他方法?比如监测栈溢出?

使用特权

评论回复
15
Uriah| | 2025-3-17 09:26 | 只看该作者
有没有试过在调试时打开堆栈监视功能?有些IDE能显示当前堆栈使用情况,能提前发现问题。

使用特权

评论回复
16
Clyde011| | 2025-3-17 09:27 | 只看该作者
这个调试问题真的折腾人,之前碰到类似情况,我直接加了个全局变量当"哨兵",检测栈有没有溢出。

使用特权

评论回复
17
公羊子丹| | 2025-3-17 09:28 | 只看该作者
这个方法确实有效,特别是局部变量多的时候,堆栈太小很容易导致HardFault!

使用特权

评论回复
18
周半梅| | 2025-3-17 09:29 | 只看该作者
调试的时候不跳转,可能和优化等级有关,试过降低优化级别看看吗?

使用特权

评论回复
19
帛灿灿| | 2025-3-17 09:30 | 只看该作者
之前也遇到过类似的问题,发现开启FPU后,堆栈消耗变大,改大堆栈后就好了。

使用特权

评论回复
20
童雨竹| | 2025-3-17 09:32 | 只看该作者
你的问题2和问题3会不会和调试器有关?有些调试器驱动或者IDE的设置也可能影响跳转。

使用特权

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

本版积分规则

37

主题

3276

帖子

1

粉丝