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

    

Пошаговая отладка в Keil 5.17 идет только по асемблеру (окно Disassembly)

Проблема с кейлом 5.17 - пошаговая отладка по исходнику работает, но только пройдя все команды в окне Disassembly. Тоесть желтая стрелочка двигается только в этом окне, а не по исходнику на С. Только когда все ассемблерные команды пройдены (которые отвечают за участок кода на С), только тогда сине-желтая стрелка переходит на след строку на исходнике.

Таким образом, что бы выполнить строку кода на С, необходимо десятки раз кликать F10, что бы выполнились строки в окне дизасембер, и только потом переходит на след строку исходника на С.

Все настройки проверил по многим статьям в интернете, но ничего не решилось. Видел пару подобных вопросов - внятных ответов на них нет.

Кто сталкивался, как исправить, чтобы пошаговая отладка шла по исходнику на С, а не по асемблеру? Заранее спасибо.

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

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


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

Какой компилятор? На всякий случай уточню - Keil работает с двумя компиляторами "из коробки", можно подключить другие.

Какие опции компилятора? В частности уровень оптимизации?

6 minutes ago, wellcom said:

пошаговая отладка шла по исходнику на С, а не по асемблеру?

Для начала попробовать сделать активным окно исходников вместо окна disasm ))

Как вариант - вообще закрыть окно disasm

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


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

Именно, сделать активным окно исходника на С (файл еще открыть надо, чтобы виден был). 

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


Ссылка на сообщение
Поделиться на другие сайты
3 часа назад, ViKo сказал:

Именно, сделать активным окно исходника на С (файл еще открыть надо, чтобы виден был). 

Делала активным, закрывал его, ничего не помогает. Когда окно дизасемблер закрыто, при пошаговой отладке через F10, ее нужно жать ровно столько, сколько команд нужно пройти по асемблерному коду, хоть и его окна нет (отключено).

Вот такие у меня настройки.

 

keil.jpg

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

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


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

Какой компилятор и какие настройки уровня его оптимизации?

Есть какая-то веская причина использовать такую старую версию Keil?

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


Ссылка на сообщение
Поделиться на другие сайты
24 минуты назад, Forger сказал:

Есть какая-то веская причина использовать такую старую версию Keil?

Keil 4 - старая. А пятерка живее всех живых.

P.S. wellcom, поставьте галку "Download to Flash" на вкладке, которую Вы привели выше. А на вкладке "Output" должна быть поставлена галка "Debug Information".

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

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


Ссылка на сообщение
Поделиться на другие сайты
1 minute ago, Arlleex said:

Keil 4 - старая. А пятерка живее всех живых.

5.17 - это старая версия, уже давно существует 5.26

35 minutes ago, wellcom said:

Вот такие у меня настройки.

Это НЕ настройки комплятора, это - настройки отладчика/программатора.

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

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


Ссылка на сообщение
Поделиться на другие сайты
2 минуты назад, Forger сказал:

5.17 - это старая версия, уже давно существует 5.26

Я к тому, что даже в четвертом Keil-е описанная ТС проблема не является зависимой от версии компилятора/среды.

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


Ссылка на сообщение
Поделиться на другие сайты
8 минут назад, Arlleex сказал:

Keil 4 - старая. А пятерка живее всех живых.

P.S. wellcom, поставьте галку "Download to Flash" на вкладке, которую Вы привели выше.

Поставил, запустил в отладке, но отладка сама не происходит (не стает на начало программы). Здесь почитал о этой настройке https://radiowolf.ru/2017/04/301/keil_µvision_ide/

Download to Flash (загружать во FLASH память) загружает код во все регионы памяти. Когда отключено, отладчик не загружает код в диапазоны адресов памяти, определенные в диалоговом окне « Flash Download Setup». Включите эту опцию, если приложение загружено в оперативную память, и алгоритм Flash определен для того же диапазона адресов. По умолчанию эта опция отключена. Обратитесь к статье базы знаний µVision Debugger: Error 57:Illegal Address in Debugger Output Window.

 

Вроде бы мне это не нужно.

1 минуту назад, Arlleex сказал:

Я к тому, что даже в четвертом Keil-е описанная ТС проблема не является зависимой от версии компилятора/среды.

есть ли ссылка откуда можно стянуть 5.26?...вчера смотрел на рутрекере - не нашел (

 

 

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

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


Ссылка на сообщение
Поделиться на другие сайты
3 минуты назад, wellcom сказал:

есть ли ссылка откуда можно стянуть 5.26?...вчера смотрел на рутрекере - не нашел (

На официальном сайте Keil uVision: https://www.keil.com/download/product/

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


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

Debug Information - это и есть elf файл?....если да то все включено.

поискал в папке с проектом файлы с расширение elf - не нашел. ((

keil2.jpg

1 минуту назад, Arlleex сказал:

На официальном сайте Keil uVision: https://www.keil.com/download/product/

а таблетка от старого подходит?

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


Ссылка на сообщение
Поделиться на другие сайты
2 минуты назад, wellcom сказал:

а таблетка от старого подходит?

Да.

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

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


Ссылка на сообщение
Поделиться на другие сайты
17 минут назад, Arlleex сказал:

Да.

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

 

11.jpg

222.jpg

333.jpg

444.jpg

555.jpg

666.jpg

777.jpg

888.jpg

999.jpg

101010.jpg

111111.jpg

121212.jpg

131313.jpg

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


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

Так у Вас прошивка подразумевает сборку с выделенных адресов памяти. Возможно, загрузчика там расположен. Значит, загрузчик должен передать управление Вашей программе, либо отлаживайтесь без загрузчика по 0x08000000 адресу.

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


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

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

Возможно что то не так настроено...или ельф файл не правильный (вообще его не нашел через поиск :to_take_umbrage:).

 

Есть идеи?

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


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

Для публикации сообщений создайте учётную запись или авторизуйтесь

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

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти