1.问题背景 watchpoint,一般用来观察某个变量/内存地址的状态(也可以是表达式),如可以监控该变量/内存值是否被程序读/写情况。
2.问题描述 在程序运行异常的时候,可以借助watchpoint来进行辅助调试。
3.问题分析 在XR MCU SDK中,支持了watchpoint功能,通过使能指定宏以及调用指定函数来使用该功能。
4.解决办法 (1)使能watchpoint的宏开关:export __CONFIG_WATCHPOINT:=y (2)调用watchpoint_add函数添加观察点 以下是代码使用示例:
代码语言:javascript复制#include <debug/watchpoint.h>
static int watchpoint_test_value;
static struct watchpoint wp;
static enum cmd_status cmd_watchpoint_value_init(char *cmd)
{
int ret;
watchpoint_test_value = 1;
wp.address = (unsigned int)&watchpoint_test_value;
wp.length = sizeof(watchpoint_test_value);
wp.rw = DWT_WRITE;
ret = watchpoint_add(&wp);
if (ret) {
printf("watchpoint_add fail.n");
}
return CMD_STATUS_OK;
}
static enum cmd_status cmd_watchpoint_value_change(char *cmd)
{
watchpoint_test_value = 0;
return CMD_STATUS_OK;
}
原贴链接:https://bbs.aw-ol.com/topic/735