Можно ли установить точку останова во встроенной рабочей среде IAR для ARM IDE таким образом, чтобы после ее достижения она автоматически удалялась/деактивировалась?
Я уже знаю способ сделать это, используя макросы C-SPY и функции __setCodeBreak()
, а затем __clearBreak()
. Проблема в том, что мне нужно установить желаемую точку останова, используя другую точку останова и макрос C-SPY, в котором __setCodeBreak()
устанавливает нужную точку останова, после чего я могу использовать для нее макрос C-SPY, в конце которого __clearBreak()
удаляет точку останова. Однако я хочу иметь возможность установить точку останова непосредственно в IAR IDE и связать ее с макросом C-SPY, а затем точка останова будет удалена/отключена при попадании (я не могу заставить __clearBreak()
работать вторым способом, автономным )
Вот пример того, что я объяснил выше:
__var bp2;
// This macro sets a new breakpoint (bp2), and is linked to another breakpoint (let's say bp1 which is set in the IDE)
Set_bp2()
{
bp2 = __setCodeBreak("{C:\\file.c}.80.1", 0, "ActionMacro()", "TRUE", "");
}
//This macro gets executed when the new breakpoint (bp2) is hit and then removes this breakpoint (bp2)
ActionMacro()
{
__message "bp2 is hit ...";
__clearBreak(bp2);
}
Итак, __clearBreak()
удается очистить точку останова, используя код возврата __setCodeBreak()
, однако я хотел бы иметь макрос, который независимо от другого макроса может очищать точку останова, на которую ссылается, что-то вроде ниже:
ActionAndClear() // This macro is linked to a breakpoint which is set in the IDE
{
__message "breakpointX is hit ...";
__clearBreak(<UNKNOWN>);
}
Есть ли значение для UNKNOWN, которое помогает?