Перейти к содержанию
    

как запретить отладчику перебрасывать меня в обработчик прерывания если оно произошло пока программа была на паузе?

 

P.S.

точки останова в прерывании нету

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

я такого поведения не наблюдал.

 

ps из сказанного вами я понимаю так:

1) запускаем программу в отладке

2) останавливаемся где-то в коде на брейке (программа находиться в паузе)

3) смотрим код, пъем кофе, ни чего не нажимаем, программа продолжает пребывать в паузе....

4)пока пили кофе, и вдруг налетел ветер  вас перекинуло в прерывание, т.е. IDE открыла файл с обработчиком прерывания и подсветило первую строку. файл, на котором был брейк и на котором стояли стал неактивным (или перекрылся обработчиком). вы ни чего не нажимали, ни чего не выполняли, находились в паузе - и вас перекинуло!?

Вот именно такого поведения, о котором вы говорите,  я ни когда не наблюдал. 

 

если же вас, находясь в паузе, ни куда не перекидывает, потом вы делаете шаг - и перекидывает в обработчик - так это не "перебрасывает в паузе", а "перебрасывает при пошаговой отладке". Это не пауза, а выполнение. Вы шагнули через функцию printf() без захода - там коду 100500 строк асма, конечно там может все что угодно случиться. Если в паузе у вас встал флаг прерывания, то после того, как допьете кофе и сделаете шаг (даже если шаг по asm("nop");) - вас перебросит. По мойму это нормальное поведение любой иде (в том числе и IAR). Чтоб этого не было, в паузе запретите прерывания (можно прямо в IDE руками нужный флаг снять, можно в коде до брейка запретить прерывания, после разрешить).

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 минуты назад, razrab83 сказал:

потом вы делаете шаг - и перекидывает в обработчик

именно так. я не правильно изложил свои мысли. в IAR такого точно нет. а тут уже за...............ло если честно

4 минуты назад, razrab83 сказал:

можно в коде до брейка запретить прерывания, после разрешить

а без костылей никак? может есть флажок в 100500 настройках этого го....на?

 

PS

прошу прощение за токсичность. но уже терпения нету

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

10 минут назад, RusikOk сказал:

именно так. я не правильно изложил свои мысли. в IAR такого точно нет. а тут уже за...............ло если честно

В IAR-е для этого есть соответствующий флажок запрета прерывания при пошаговой отладке.

Если тут такого нет, то тогда только делать вручную запрет/разрешение прерываний, редактируя регистры PRIMASK/FAULTMASK.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

6 минут назад, RusikOk сказал:

в IAR такого точно нет

в иаре точно такое есть. если в паузе сработает таймер или вачдог, то при шаге - велкомТуОбработчик. НО, если у вас STM32, то посмотрите регистр DBG. В нем можно отключить прерывания в "паузе". Например если выставить флаг DBG_WWDG_STOP, то Window Watchdog Stopped when Core is halted

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

7 минут назад, razrab83 сказал:

в иаре точно такое есть. если в паузе сработает таймер или вачдог, то при шаге - велкомТуОбработчик.

Во-первых: в IAR-е это отключаемо посредством соответствующего чекбокса в настройках. На время шагов IAR ставит запрет прерывания.

7 минут назад, razrab83 сказал:

НО, если у вас STM32, то посмотрите регистр DBG. В нем можно отключить прерывания в "паузе". Например если выставить флаг DBG_WWDG_STOP, то Window Watchdog Stopped when Core is halted

Во-вторых этот регистр не имеет никакого отношения к запросам прерываний. Он замораживает тактирование самого соответствующего периферийного блока на время останова CPU.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

3 минуты назад, jcxz сказал:

Во-вторых этот регистр не имеет никакого отношения к запросам прерываний. Он замораживает тактирование самого соответствующего периферийного блока на время останова CPU.

и? это имеет прямое отношение к запросом на прерывания: стоит вачдог - нет запросов на прерывание. У ТС может именно по WD идет прерывание. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

3 минуты назад, razrab83 сказал:

У ТС может именно по WD идет прерывание.

по внешнему прерыванию. уже накостылял в коде HAL_NVIC_DisableIRQ(BUFF_AVAIL_EXTI_IRQn);

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

28 минут назад, RusikOk сказал:

по внешнему прерыванию. уже накостылял в коде HAL_NVIC_DisableIRQ(BUFF_AVAIL_EXTI_IRQn);

А что - там нет аналога IAR-овского окна "Registers"?

image.thumb.png.9f67d3eef1525da2bf0e11e76ddceecb.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

8 минут назад, jcxz сказал:

А что - там нет аналога IAR-овского окна "Registers"?

есть только все сбросится после перезапуска отладки

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

37 минут назад, RusikOk сказал:

есть только все сбросится после перезапуска отладки

Зато можно оперативно запрещать/разрешать. Без необходимости перепрошивки. В любой момент и в любом месте программы.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

4 часа назад, RusikOk сказал:

как запретить отладчику перебрасывать меня в обработчик прерывания если оно произошло пока программа была на паузе

Эту функцию отладчика ещё не изобрели, хотя проблеме более 20 лет. И не только в IAR, но и во всех остальных IDE. Есть костыльные попытки с запретом прерываний, когда это выполняет скрипт в реальном времени. Но стабильность результата ниже уровня плинтуса. 

Это даже не проблема свистка, и не ide как таковой - проблема в физической реализации алгоритма на кристалле чипа. Там всё застыло на 30 лет с момента принятия промышленного стандарта, и теперь всем страшно его трогать - потому что сломается вообще все и сразу.

Изменено пользователем makc
Грубая лексика

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

13 hours ago, RusikOk said:

а есть в кубе аналог такой очень полезной штуки?

Это?

image.thumb.png.2c3c65b1901d32203f4bc6d444c00e21.png

Изменено пользователем tonyk_av

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...