【ARM Trace32(劳特巴赫) 使用介绍 13.1 -- Trace32 Var 变量篇 -- 符号表】


请阅读【Trace32 ARM 专栏导读】


符号表变量名保留

在使用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

猜你喜欢

转载自blog.csdn.net/sinat_32960911/article/details/134929433