主题中讨论的其他器件: TM4C123GH6PZ、 HALCOGEN
工具/软件:TI C/C++编译器
您好!
我正在项目中使用 RM48L952和 TM4C123GH6PZ、并希望启用动态堆栈溢出检查。 我使用的是 TI ARM C/C++编译器版本16.9.4.LTS
当我添加--stack_overflow_check 标志并添加我的项目编译的 void handle_stkovf (void)函数时、在 RM48上运行代码时、代码不会超过 prefetchEntry。
您可以在下面找到 RM48 gdb 会话和主文件。
-stack_overflow_check 与 TM4C123GH6PZ 搭配使用、但调用 FaultISR()而不是调用 handle_stkovf (来自编译器随附的 tm4c123gh6pz_startup_ccs.c)。
是否有关于如何使用--stack_overflow_check 选项的全面说明?
谢谢、
Karel
RM48 GDB 会话:
(gdb)目标远程 localhost:55001
使用 localhost:55001进行远程调试
警告:未指定可执行文件、目标不支持
自动确定可执行文件。 尝试使用"file"命令。
0x0000598c 输入?? ()
(gdb)监视器复位
正在重置目标
(gdb)文件 fpmain.elf
正在调试一个程序。
是否确定要更改文件? (Y 或 n) y
从 fpmain.elf...done 读取符号。
(gdb) b main
0x5978处的断点1:文件/home/karel/Documents/stmatb_sourcecode/src/STMATB/functional_processor/fpmain.c、第13行。
(gdb) b handle_stkovf
0x59f8处的断点2:文件/home/karel/Documents/stmatb_sourcecode/src/STMATB/functional_processor/fpmain.c、第30行。
(gdb) b 递归
0x5984处的断点3:文件/home/karel/Documents/stmatb_sourcecode/src/STMATB/functional_processor/fpmain.c、第17行。
(gdb)负载
正在加载.intvecs 段、大小为0x20 lma 0x0
正在加载段.text、大小为0x5c58 lma 0x20
正在加载段.const、大小为0x23c lma 0x5c78
正在加载段.cinit、大小为0x24 lma 0x66b8
起始地址0x5a6c、加载大小为24280
传输速率:78KB/秒、4856字节/写入。
(gdb) c
继续。
^C
对接收到的信号 SIGTRAP、跟踪/断点陷阱进行编程。
PrefetchEntry () at /home/karel/Documents/herculeshallib/src/hal/sys_intvecs.asm:59
59b 预取指令
RM48主文件
#include
#include "hal_stdtypes.h"
extern void recurse (void);
extern void handle_stkovf (void);
int main (空)
{
递归();
返回0L;
}
void recurse (void){
uint8_t maan[100];
uint8_t roos = 0;
for (roos = 0;roos < 100;roos++){
Maan[roos]= roos;
递归();
if (maan[roos]=99){
Roos = 0;
}
}
}
void handle_stkovf (void){
while (1);
}