Форум программистов, компьютерный форум, киберфорум
Электроника и радиотехника
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.53/393: Рейтинг темы: голосов - 393, средняя оценка - 4.53
0 / 0 / 0
Регистрация: 22.03.2015
Сообщений: 838

Простая, но неразрешимая (?) проблема сишной отладки на мк

19.06.2015, 18:04. Показов 73267. Ответов 160
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Допустим, я отлаживаю сишную программу на мк и, много раз нажав на разные кнопки на девайсе и на пк, попадаю-таки на сбойную функцию.
Казалось бы, делов то - исправить и заменить сбойную ф-цию, ну или хотя бы поставить временную заплатку, и продолжить отладку.
Но продолжить невозможно - только начинать всё заново - всё перекомпилировать, всё перезалить и снова нажимать на все кнопки.
И на следующей сбойной ф-ции опять всё заново, и так тупо по кругу )
Или есть варианты?

update
Зачеркнул - двусмысленная была фраза ) Вопрос не в том, как надо программировать, чтобы меньше отлаживаться, а всего лишь в том, как изменить программу, не выходя из сеанса отладки.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
19.06.2015, 18:04
Ответы с готовыми решениями:

LPC21xx FIO0SET FIOCLR проблема отладки. Регистры FIO0SET FIOCLR не реагируют на запись 1 в режиме отладки
LPC21xx FIO0SET FIOCLR регистры проблема отладки. Регистры FIO0SET FIOCLR не реагируют на запись 1 в режиме отладки. Если...

HELP!!! Неразрешимая ошибка!
Это не ошибка в исходном коде! Время от времени некоторые формы (до этого работавшие нормально) начинают сходить с ума, выдавая...

Keil 4.73 проблема отладки
иногда в отладке (или симуляции) не заходит в void main . закидывает в sistem_ini зависает (ждет установки частоты потом обрыв связи)...

160
0 / 0 / 0
Регистрация: 18.03.2010
Сообщений: 2,230
22.06.2015, 09:21
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от vt340
c,d) нет, pic и x51, пожалуй не будем )
вот про типа этого я и намекал;) на авр, а уж тем более арм теоретически можно сделать такое. единственное, что будет втыкать палки в колеса - маленькая память, но тут уж никуда не деться.
0
0 / 0 / 0
Регистрация: 17.03.2010
Сообщений: 901
22.06.2015, 10:06
Цитата Сообщение от itysiy
комплексный срач
зачетное словосочетание....
0
0 / 0 / 0
Регистрация: 19.02.2012
Сообщений: 304
22.06.2015, 10:20
Люди скоро станут боятся вопросы задавать. Благодаря вот таким срачам. Ну нафига оно надо? Никто из присутствующих свою точку зрения не изменит. Зато будет простыня на 20 страниц. Мегапрофи упражняются в красноречии.
0
1 / 1 / 0
Регистрация: 06.12.2016
Сообщений: 3,946
22.06.2015, 10:23
Цитата Сообщение от brummim-k
Люди скоро станут боятся вопросы задавать.
Интересно , а что вы хотели подчерпнуть в теме с таким заголовком? :)))))))
0
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 3,044
22.06.2015, 10:26
Тот, кто выложил тот лог, поступил меленько, подленько и трусливо. Зарегистрировал ник-однодневку и выложил лог.
Да, я допустил ошибку, что задал вопрос на публичном ресурсе. И что дальше? Я более, чем уверен, что на этом форуме мои оппоненты щеки надувают, а на других ресурсах им и сказать по существу нечего. Троллизм чистой воды. Я никогда не видел, чтобы профессионалы постоянно троллили, читай, гадили, везде, где только можно.
Как я и говорил, тот, кто выложил этот лог, сделал большую ошибку. Не просчитал последствия.
Дискуссия закончена. Вылез Досикус, все, тема засрана.
0
1 / 1 / 0
Регистрация: 06.12.2016
Сообщений: 3,946
22.06.2015, 11:30
Надо же , да у тебя паранойя милок. Кругом враги и завистники . :)))))))
И насчет троллизма - начни с себя ... :))))))))
0
0 / 0 / 0
Регистрация: 18.03.2010
Сообщений: 2,230
22.06.2015, 11:37
Цитата Сообщение от brummim-k
Люди скоро станут боятся вопросы задавать. Благодаря вот таким срачам. Ну нафига оно надо? Никто из присутствующих свою точку зрения не изменит.
ну почему? я для себя что-то новое узнал, мне уже польза, а вы как хотите, не читайте.
Цитата Сообщение от dymyurk1978
Да, я допустил ошибку, что задал вопрос на публичном ресурсе.
ну вообще нет. твоя ошибка в том, что, выражаясь твои языком, это ты "щеки дуешь". после этого лога всем понятно, что происходит: приходит дядя, говорит что все лохи (потому что сидят на ресурсе для чайников, а не на электрониксе), а он крутой и всё знает. а на самом деле за поддержкой штанов обращается к другим людям, т.е. не важно совсем, на публичный ресурс или нет. вот и вся проблема. а вывод прост: ЧСВ ну очень завышено, а знаний не очень хватает. имеешь ли ты право после этого указывать другим, что стоит воспринимать всерьез, а что нет? да еще и так категорично, как ты всегда делаешь?

Цитата Сообщение от dymyurk1978
Троллизм чистой воды. Я никогда не видел, чтобы профессионалы постоянно троллили, читай, гадили, везде, где только можно.
а кто троллит постоянно? троллят только выскочек. ну разве что выскочки где-то постоянно:)))

вообще, если вы заметили, самые срачи образуются именно тогда, когда приходит "профи" и начинает остальным агрессивно втирать какую-то дичь. не было бы таких "профи", дискуссия проходила бы спокойно.
0
1 / 1 / 0
Регистрация: 06.12.2016
Сообщений: 3,946
22.06.2015, 11:44
Ymk, +100500 ...
0
0 / 0 / 0
Регистрация: 16.05.2013
Сообщений: 157
22.06.2015, 12:50
Цитата Сообщение от dosykus_2
Ну то что ты "политическая проститука " ясно было с самого начала, вот только ни калокуб ни SPL как не помогли так и не помогут тебе ... :)))))))))))
Гы... а сколько словесного поноса от тебя исходило за величии SPL , и тут на тебе... :))))))))))
Тебя теперь можно величать "подмножество калокуба" ? :)))))))))))
Я оказался не прав. Ещё как мой аватар возбуждает!!! Пока не буду меня надпись на аватаре на HAL. А то количество г*на в сообщениях перевозбудившихся товарищей зашкалит за разумные пределы )))))
0
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 1,864
22.06.2015, 13:09
Ещё один стимул к срачу - когда по теме уже всё основное сказано, а поговорить ещё хочется =)

2 vt340: как, достаточное понимание темы уже появилось?

В принципе, можно за разумное время довести задачу до состояния "заменить одну функцию на лету". Вкратце:

Надо изменить реализацию функции my_fun.

Исходное состояние:
1. Есть собранная программа (исходники, все объектные файлы и бинарник прошивки).
2. Все обращения к my_fun идут через одну точку (например, указатель на эту функцию, хранящийся в массиве указателей)

Действия:
1. Выделяем кусок исходника с my_fun. Оставляем в нём только саму функцию + подключение хедеров. Если функция использует какие-то глобальные переменные - объявляем их как extern, если другие функции - пишем для них декларации. Таким образом, этот исходник можно будет скомпилировать.
2. Заменяем в нём имя функции на my_fun_hacked.
Допустим, получили в итоге файл my_fun_hacked.c
3. Компилируем полученный модуль - получаем объектный файл my_fun_hacked.o
4. Правим таблицу импорта (ну, то единственное место, через которое вызов my_fun шёл)
5. Линкуем программу: все ранее использовавшиеся объектники + my_fun_hacked.o
Для линковки надо составить линкер скрипт или просто список файлов так, чтобы my_fun_hacked прилинковалась в самый конец. Возможно, тут будут сложности, но вряд ли что-то нереализуемое. Возможно, придётся в linker ssript явно указать адрес размещения новой функции (чтобы какие-нибудь глобальные данные не сдвинулись).
Да, нежелательно включать опцию "dead code elimination".
В результате все ранее использовавшиеся функции останутся на своих местах, и my_fun_hacked будет использовать именно их.
Большая проблема - если понадобилось задействовать какие-то библиотечные функции, которые ранее не были прилинкованы.
6. Получили новый бинарник, который по большей части совпадает со старым, отличаясь одним указателем и одним новым куском кода в конце. Выделяем изменения, патчим флеш.

Да, возможны некоторые упрощения: например, можно не делать переход через таблицу символов, а прописать переход на my_fun_hacked в бинарнике или объектнике прямо поверх первых байтов my_fun. Сработает, если только мы в момент замены не находились именно в этом месте или внутри вызова из этого места ещё куда-то.
0
0 / 0 / 0
Регистрация: 18.03.2010
Сообщений: 2,230
22.06.2015, 15:55
вручную это сделать, наверное, можно, а как это засунуть в ide?
0
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 1,864
22.06.2015, 18:39
Полноценно, чтобы всё делалось автоматически? Крайне сложная задачка (хотя и решаемая: MS в Visual Studyo справилась же).

А если ограничиться заменой одной функции, да потребовать поддержки от программиста (выделить блоки с требуемыми ymstude и с самой функцией, чтобы файл с этими двумя блоками компилился) - то ещё можно побарахтаться самостоятельно... (вызов сторонней тулзы из среды, sed для вырезания нужных кусков исходника и правки имени, скрипты для перелинковки и т.п.)
0
1 / 1 / 0
Регистрация: 14.02.2013
Сообщений: 408
22.06.2015, 19:16
Как-то всё сложно и ненужно. Большинство с установкой и настройкой проекта еле справляется. Да и в чём облегчение, если ручонками и мозгами нужно шарить направо и налево творя добро, не заскучаешь.
0
1 / 1 / 0
Регистрация: 06.12.2016
Сообщений: 3,946
22.06.2015, 19:38
Цитата Сообщение от OrtDim
Я оказался не прав.
Ты удивишься насколько ты во всем не прав, со своим юношеским максимализмом. Осталось только начат думать...
0
0 / 0 / 0
Регистрация: 16.05.2013
Сообщений: 157
22.06.2015, 20:12
Цитата Сообщение от dosykus_2
Ты удивишься насколько ты во всем не прав, со своим юношеским максимализмом. Осталось только начат думать...
Не-не. Не верю. Ещё как возбуждает. Твой исход какашками говорит об обратном ))

PS: запасся попкорном и демотиваторами в ожидании дальнейших реакций на красную тряпку с тремя заветными буквами...
0
0 / 0 / 0
Регистрация: 18.03.2010
Сообщений: 2,230
22.06.2015, 20:38
Цитата Сообщение от oomomstir
Полноценно, чтобы всё делалось автоматически? Крайне сложная задачка
ну да. а иначе какой смысл-то? экономить кол-во стираний флеша? как я понял, вся идея была в том, что в иде ты отлаживаешь, переписываешь кусок, допрошиваешь и шагаешь дальше. если это делать вне иде - мне смысл вообще непонятен.

кстати, можно же и без таблиц адресов делать - патчить первую команду старой функции на переход на новую. потом новую на более новую.
0
0 / 0 / 0
Регистрация: 18.03.2010
Сообщений: 2,230
22.06.2015, 20:43
а можно, чтобы не мутить с кастрацией исходника, сделать чтобы каждая функция компилилась в свою секцию, файл просто пересобрать, потом с objcopy скопировать в новый объектник только одну нужную секцию и прилинковать ее к старой версии (+патч старой функции)?
0
1 / 1 / 0
Регистрация: 06.12.2016
Сообщений: 3,946
22.06.2015, 20:47
Цитата Сообщение от Ymk
экономить кол-во стираний флеша?
Если что, в тех же STM32 доступен дебаг в ROM...
0
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 1,864
22.06.2015, 20:49
Да, вероятно, так даже проще будет (но потом придётся из объектника извлечь только нужную секцию и переименовать функцию в ней, чтобы при линковке осталась и старая функция, и новая). Но наверняка ещё куча граблей и ограничений всплывёт - не зря Apple отказалась от поддержки Edit omd Continue.
0
0 / 0 / 0
Регистрация: 18.03.2010
Сообщений: 2,230
22.06.2015, 21:18
Цитата Сообщение от dosykus_2
Если что, в тех же STM32 доступен дебаг в ROM...
это я еще в бородатых лпц213х юзал:) просто не везде есть такая возможность.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
22.06.2015, 21:18

Проблема отладки консольного решения
В общем проблема такая, пришёл я после армии, в универе дали задание покодить на C#. Столкнулся с проблемой при компиляции любого решения в...

Проблема отладки локальных переменных
Введение новой возможности объявлять переменную непосредственно в коде и ограничение ее видимости блоком кода вещь вроде бы полезная, но...

Наименьшее расстояние, проблема отладки
Наименьшее расстояние Даны координаты вершин треугольника, координаты точки D, лежащая внутри треугольника, требуется найти и вывести...

Atmel Studio 6. Проблема запуска в режиме отладки
привет. я начинающий в программировании МК и у меня появилась такая проблема: в Atmel Studio 6 когда я запускаю программу в режиме debug,...

Исполняемый файл для отладки, указанный в профиле отладки, не существует
После того как удалил папку с частью ненужных исходных кодов, вылезла эта ошибка. Восстановление файлов ситуации уже не меняет. Что делать?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
80
Ответ Создать тему
Новые блоги и статьи
Установка нескольких штампов электронной подписи в строго определенных местах файла docx
ВладимирСамохин 19.07.2026
(В!) Работа с Электронной подписью - это неотъемлемая часть современного документооборота. Но что делать, если нужно поставить несколько штампов электронной подписи в строго определенных местах. . .
сукцессия 35. Научная статья о проделанной работе
anaschu 19.07.2026
Написал в формате латекс и пдф
Вангую, что это не пройдёт модерацию, и на неделе я запущу свой сервер.
Hrethgir 19.07.2026
Эта публикация сейчас в песочнице и ждёт приглашения. https:/ / habr. com/ ru/ sandbox/ 295048/ начало и оглавление - Как «пернатого» заставить осваивать новые горизонты опыта через масштабирование. . .
сукцессия 33. открытые вопросы от клауде
anaschu 19.07.2026
"Что накопилось за эту часть А — тринадцать правок, из которых шесть пришли из ваших вопросов и каждая оказалась реальной ошибкой, а не калибровкой: односторонний симбиоз, отсутствующий листопад,. . .
32 сукцессия
anaschu 19.07.2026
сукцессия 28‑мерное ядро стабилизировано Коллеги, фиксирую разбор инженерных правок и их изоморфную проекцию на экономику, меметику и половой отбор. Модель теперь не «подкручивает» сходимость —. . .
сукцессия 31: модель микоризы - это модель ещё нескольких явлений, социальных и экономических
anaschu 18.07.2026
Теория «Всего»: апдейт v1. 1. 2 — 28‑мерное ядро стабилизировано Коллеги, фиксирую разбор инженерных правок и их изоморфную проекцию на экономику, меметику и половой отбор. Модель теперь не. . .
сукцессия 30. Массив проверяющих друг друга моделей
anaschu 18.07.2026
Архитектура сети взаимопроверяющих моделей микоризной сукцессии (v2. 0) Развитие тензорного ОДУ-ядра и создание кросс-платформенного калибровочного полигона Уважаемые коллеги! В продолжение. . .
Грибы - это женщины, деревья - это мужчины. Анти инь янь для союза мужчины и женщины.
anaschu 18.07.2026
ГЛАВНЫЙ НАУЧНО-ФИЛОСОФСКИЙ ВЫВОД: Сексуально-Репродуктивный Капитализм против Государства Моногамии Коллеги, мы вышли на финишную прямую 20-мерного ОДУ-моделирования вековой сукцессии (ветка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru