文章目录
符号表变量名保留
在使用trace32 进行debug的时候,很多时候直接使用符号表中的符号就可以完成很多事情,也就是使用变量名。但是有时我们在elf 文件中找不到我们定义的变量。
有两种方法可以解决这个问题:
使用 volatile
struct t32_str {
uint32_t t32_val;
uint32_t t32_id;
char* t32_name;
};
static volatile struct t32_str str_t32;
static uint32_t volatile g_t32;
void t32_test(void)
{
uint32_t t32_tmp;
debug_printf("%s\n", __func__);
t32_tmp = 0xdeadbeef;
g_t32 = 0xdeadbeef;
str_t32.t32_val = 0x5a5a5a5a;
str_t32.t32_id = 0xacce55;
str_t32.t32_name = "trace32";
debug_printf("t32_tmp:0x%x, g_t32:0x%x, val:0x%x, id:0x%x, name:%s\n",
t32_tmp, g_t32, str_t32.t32_val, str_t32.t32_id, str_t32.t32_name);
}
方法二:
降低优化等级,
CFLAGS := $(CPU_TYPE) -g -O1 -nostartfiles -ffreestanding -Wall -Werror
可以尝试将优化等级从 O1
修改为O0
。