Jump to content

    

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

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

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

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

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

Edited by wellcom

Share this post


Link to post
Share on other sites

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

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

6 minutes ago, wellcom said:

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

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

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites
3 часа назад, ViKo сказал:

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

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

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

 

keil.jpg

Edited by wellcom

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites
24 минуты назад, Forger сказал:

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

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

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

Edited by Arlleex

Share this post


Link to post
Share on other sites
1 minute ago, Arlleex said:

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

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

35 minutes ago, wellcom said:

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

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

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

Share this post


Link to post
Share on other sites
2 минуты назад, Forger сказал:

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

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

Share this post


Link to post
Share on other sites
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?...вчера смотрел на рутрекере - не нашел (

 

 

Edited by wellcom

Share this post


Link to post
Share on other sites
3 минуты назад, wellcom сказал:

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

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

Share this post


Link to post
Share on other sites

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

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

keil2.jpg

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

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

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

Share this post


Link to post
Share on other sites
2 минуты назад, wellcom сказал:

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

Да.

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

Share this post


Link to post
Share on other sites
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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

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

 

Есть идеи?

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now