реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Остановка по условию
Igor26
сообщение Dec 2 2005, 07:35
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 521
Регистрация: 10-02-05
Пользователь №: 2 544



Уважаемые коллеги! Подскажите пожалуйста, как при отладке программы под эмулятором/симулятором, заставить останавливатся этот процесс при достижении какого-то условия.
Например, счетчик досчитал до 32768, после этого отладка остановилась, а далее пошли отлаживать программу по шагам. Не хочется в программу вставлять всевозможные If() и устанавливать на нее BreakPoint. Среда - IAR411A

Сообщение отредактировал Igor26 - Dec 2 2005, 07:37
Go to the top of the page
 
+Quote Post
starter48
сообщение Dec 2 2005, 07:43
Сообщение #2


Частый гость
**

Группа: Свой
Сообщений: 112
Регистрация: 15-10-05
Из: Томск
Пользователь №: 9 680



Цитата(Igor26 @ Dec 2 2005, 13:35) *
Уважаемые коллеги! Подскажите пожалуйста, как при отладке программы под эмулятором/симулятором, заставить останавливатся этот процесс при достижении какого-то условия.
Например, счетчик досчитал до 32768, после этого отладка остановилась, а далее пошли отлаживать программу по шагам. Не хочется в программу вставлять всевозможные If() и устанавливать на нее BreakPoint. Среда - IAR411A

Не знаю как это делают нормальные люди smile.gif
но я делал так:
Код
if (count==32768) {
__no_operation();//nop - безопасное действие
}

Вот на nop ставил breakpoint.
Т.е. ставить "всевозможные" if - одинственное решение, которое я нашёл...
Чтобы релиз не замусоривать, можно такие if завернуть в #ifdef - #endif, чтобы в релизе отключалось автоматом.

Сообщение отредактировал starter48 - Dec 2 2005, 07:46
Go to the top of the page
 
+Quote Post
Igor26
сообщение Dec 2 2005, 07:58
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 521
Регистрация: 10-02-05
Пользователь №: 2 544



Цитата(starter48 @ Dec 2 2005, 10:43) *
Цитата(Igor26 @ Dec 2 2005, 13:35) *

Уважаемые коллеги! Подскажите пожалуйста, как при отладке программы под эмулятором/симулятором, заставить останавливатся этот процесс при достижении какого-то условия.
Например, счетчик досчитал до 32768, после этого отладка остановилась, а далее пошли отлаживать программу по шагам. Не хочется в программу вставлять всевозможные If() и устанавливать на нее BreakPoint. Среда - IAR411A

Не знаю как это делают нормальные люди smile.gif
но я делал так:
Код
if (count==32768) {
__no_operation();//nop - безопасное действие
}

Вот на nop ставил breakpoint.
Т.е. ставить "всевозможные" if - одинственное решение, которое я нашёл...
Чтобы релиз не замусоривать, можно такие if завернуть в #ifdef - #endif, чтобы в релизе отключалось автоматом.

Да, именно так я сейчас и делаю, но не всегда это приемлемо. Проверка условия - это лишнее время.
Go to the top of the page
 
+Quote Post
Old1
сообщение Dec 2 2005, 08:08
Сообщение #4


Знающий
****

Группа: Свой
Сообщений: 697
Регистрация: 26-07-05
Из: Могилев
Пользователь №: 7 095



Цитата(Igor26 @ Dec 2 2005, 10:35) *
Уважаемые коллеги! Подскажите пожалуйста, как при отладке программы под эмулятором/симулятором, заставить останавливатся этот процесс при достижении какого-то условия.
Например, счетчик досчитал до 32768, после этого отладка остановилась, а далее пошли отлаживать программу по шагам. Не хочется в программу вставлять всевозможные If() и устанавливать на нее BreakPoint. Среда - IAR411A

Используйте системные макросы отладчика (С-SPY): __setCodeBreak, __setDataBreak ,__setSimBreak
(см. IAR Embedded Workbench IDE online help/C-SPY macros)... Для их использования необходимо создать командный файл и запускать его одновременно с запуском C-SPY (пример такого файла есть в папке tutor, файл с расширением *.mac)
Go to the top of the page
 
+Quote Post
Igor26
сообщение Dec 2 2005, 08:46
Сообщение #5


Знающий
****

Группа: Свой
Сообщений: 521
Регистрация: 10-02-05
Пользователь №: 2 544



Цитата(Old1 @ Dec 2 2005, 11:08) *
Цитата(Igor26 @ Dec 2 2005, 10:35) *

Уважаемые коллеги! Подскажите пожалуйста, как при отладке программы под эмулятором/симулятором, заставить останавливатся этот процесс при достижении какого-то условия.
Например, счетчик досчитал до 32768, после этого отладка остановилась, а далее пошли отлаживать программу по шагам. Не хочется в программу вставлять всевозможные If() и устанавливать на нее BreakPoint. Среда - IAR411A

Используйте системные макросы отладчика (С-SPY): __setCodeBreak, __setDataBreak ,__setSimBreak
(см. IAR Embedded Workbench IDE online help/C-SPY macros)... Для их использования необходимо создать командный файл и запускать его одновременно с запуском C-SPY (пример такого файла есть в папке tutor, файл с расширением *.mac)

Большое спасибо! Попробую.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 18:03
Рейтинг@Mail.ru


Страница сгенерированна за 0.01365 секунд с 7
ELECTRONIX ©2004-2016