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

Место зависания отладчика

1 час назад, Darth Vader сказал:

Сделать поиск имени функции по всему проекту пробовали? Сколько нашлось?

Два.

В названии описания функции и название самой функции. 

ЗЫ. В описании то, что я назвал блоком программы, называется модулем.

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

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


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

 Чудес не бывает. Если имя функции не находится в коде и вечновисящий отладчик не останавливается на брикдауне (а почему не брикапе?), то очевидно она не работает? В map-файле ещё можно поискать.

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


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

33 minutes ago, ART_ME said:

Два.

В названии описания функции и название самой функции. 

ЗЫ. В описании то, что я назвал блоком программы, называется модулем.

 

Вызов функции может быть запрятан в макрос. Причем даже не в "прямом" виде, а как "сборка слагаемых" препроцессором (как в FreeRTOS).

Найти такое поиском "в лоб" невозможно.

Функция может также вызываться по указателю на функцию.

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

Для таких исследований - скопируйте ВСЕ файлы кода и заголовков из каталога проекта в ОДИН файл :) и ищите в нем. В противном случае

всегда есть вероятность что-то пропустить и не найти.

ps поищите упоминание ф-ий в map-файле.  Там же можно найти (если включить максимальный уровень детализации листинга) и "вложенности" вызовов функций. (метка функции и перечень ф-ий, которые из нее вызываются)

 

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


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

12 часов назад, k155la3 сказал:

Вызов функции может быть запрятан в макрос.

Так оно и оказалось.

Спасибо.

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


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

Just now, ART_ME said:

Так оно и оказалось.

Т.е. макрос клеил имя для функции, иначе вы бы нашли её по имени.

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


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

13 часов назад, VladislavS сказал:

 Чудес не бывает. Если имя функции не находится в коде и вечновисящий отладчик не останавливается на брикдауне (а почему не брикапе?), то очевидно она не работает? 

Тут непонятки:

- если поставить брейкпоинт внутрь этой функции  и запустить в отладчике RUN, то программа в эту функцию не попадает.

- если поставить еще один брейкпоинт в майн перед установкой переменной, разрешающей запуск этой функции и повторно запустить RUN, то программа в эту функцию попадает. 

И да, искомая функция вызывается по прерыванию.

Или это нормально?

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

Т.е. макрос клеил имя для функции, иначе вы бы нашли её по имени.

Насколько я понял, да.

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

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


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

21 minutes ago, ART_ME said:

Или это нормально?

Что-то странное у вас происходит. Поставьте брейк в окне дизассемблера. Адрес функции можно узнать в map-файле. По идее должно всегда там останавливаться при вызове функции. В вашем случае возможно оптимизация кода создаёт подобные эффекты. Можете её отключить, это делается в свойствах проекта -> "c/c++ compiler" -> "optimization". Выбираете там "NONE".

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


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

32 минуты назад, ART_ME сказал:

перед установкой переменной, разрешающей запуск этой функции

Где в коде используется переменная, разрешающая запуск функции, тоже никак не найти? Что-то не верится...

32 минуты назад, ART_ME сказал:

И да, искомая функция вызывается по прерыванию

И сколько у вас там прерываний, что нельзя было просмотреть их все за это время?

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


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

1 час назад, VladislavS сказал:

Где в коде используется переменная, разрешающая запуск функции, тоже никак не найти? Что-то не верится...

И сколько у вас там прерываний, что нельзя было просмотреть их все за это время?

Где в коде используется переменная, разрешающая запуск функции, я нашел, именно перед ней я и ставлю еще один брейкпоинт.

Вопрос в том, что ниже следующее поведение отладчика является нормальным или есть признак проблемы?

- если поставить брейкпоинт внутрь этой функции  и запустить в отладчике RUN, то программа в эту функцию не попадает.

- если поставить еще один брейкпоинт в майн перед установкой переменной, разрешающей запуск этой функции и повторно запустить RUN, то программа в эту функцию попадает. 

 

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


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

23 минуты назад, ART_ME сказал:

 Вопрос в том, что ниже следующее поведение отладчика является нормальным или есть признак проблемы?

Есть, но после "зависания отладчика"  это неважно.

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


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

3 часа назад, VladislavS сказал:

Есть, но после "зависания отладчика"  это неважно.

Для флудера - да! 

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


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

Информация для тех, кто столкнется с проблемами отладки.

"Ногодрыг" и RTT решают все проблемы. А отладчики от IDE - в топку.

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


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

47 minutes ago, ART_ME said:

А отладчики от IDE - в топку.

Ну сё, срочно сеггеру и прочим надо закрывать подразделения, выпускающие отладчики. А IAR'у и Кейлу - снижать цены на продукты, т.к. отладчики покупать никто не будет. Можно использовать только компиляторы.

48 minutes ago, ART_ME said:

"Ногодрыг" и RTT решают все проблемы.

Не смешите, пожалуйста.

49 minutes ago, ART_ME said:

Информация для тех, кто столкнется с проблемами отладки.

Надеюсь, те, кто столкнётся, будут чуток по-сообразительнее.

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


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

Продолжение оффтопика приведет к предупреждениям и закрытию темы.

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


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

9 minutes ago, ART_ME said:

где люди вынуждены общаться со мной в личке

Простите, за офф. Но вы не можете общаться в личке. Я вам письмо хотел отправить. А вам запрещено получать письма. Так, что не придумывайте.

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


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

Гость
Эта тема закрыта для публикации ответов.
×
×
  • Создать...