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

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

Язык русский, английский не важно. Есть какие нибудь документы по дебаггеру Кейл кроме хелпа?

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


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

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

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


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

2 minutes ago, Димон Безпарольный said:

Я то думал что здесь знают что - то наиболее подходящее.

Ваш вопрос - очень общий, ни разу не конкретный. Поэтому и ответ на него аналогичный. Удивляться нечему :)

 

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


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

4 minutes ago, Forger said:

Ваш вопрос - очень общий, ни разу не конкретный. Поэтому и ответ на него аналогичный. Удивляться нечему :)

Понял. Звиняюсь. Конкретизирую. Есть подозрение что в процессе выполнения кода разрушается память. Более конкретно здесь:

STM32L476 + SD. f_write выдает FR_DISK_ERR

https://electronix.ru/forum/index.php?app=forums&module=forums&controller=topic&id=151901&tab=comments#comment-1624537

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

 

Где бы кроме гугла об этом почитать?

Изменено пользователем Димон Безпарольный

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


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

3 minutes ago, Димон Безпарольный said:

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

Можно. Это есть в мануале, в частности тут

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


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

9 minutes ago, Forger said:

Можно. Это есть в мануале, в частности тут

О как. Спасибо.

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


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

Не нашел ответа. Как в дебаггере вывести / узнать адрес начала этой структуры:

 

Screenshot_1.png

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


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

12 minutes ago, Димон Безпарольный said:

Не нашел ответа. Как в дебаггере вывести / узнать адрес начала этой структуры?

Шутите? 

Вспомните, как это делали в других средах, тут аналогично.

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


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

http://www.keil.com/appnotes/docs/apnt_230.asp?_ga=2.147416191.932417894.1557290765-121321346.1557290765

Я несколько раз давал подобную информацию. 

Адреса переменных видны в map файле. 

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


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

Всем спасибо. Изучил, научился даже ставить break на изменение переменных. Нижайший поклон.

 

Помогла ссылка Viko

 

http://www.keil.com/appnotes/docs/apnt_230.asp?_ga=2.147416191.932417894.1557290765-121321346.1557290765

 

Раньше пытался обуздать Watch Window. Оказывается локальные переменные она видит только в останове. Поскольку они в регистрах.

Изменено пользователем Димон Безпарольный

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


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

15 minutes ago, Димон Безпарольный said:

 Оказывается локальные переменные она видит только в останове.

Это вполне логично. Кто знает язык C на базовом уровне, тот понимает причину этого.

 

15 minutes ago, Димон Безпарольный said:

Поскольку они в регистрах.

Нда... случай запущенный :fool:

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


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

16 minutes ago, Forger said:

Это вполне логично. Кто знает язык C на базовом уровне, тот понимает причину этого.

 

Нда... случай запущенный :fool:

Changing a local variable to a static or global normally means it is moved from a CPU register to RAM. CoreSight can view RAM but not CPU registers when the program is running.

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


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

28 minutes ago, Димон Безпарольный said:

Changing a local variable to a static or global normally means it is moved from a CPU register to RAM. CoreSight can view RAM but not CPU registers when the program is running.

Это тот самый случай, когда работает поговорка: "смотришь в книгу, а видишь фигу". Случай действительно запущенный :)

 

Специально для такого случая: локальные переменные размещаются в стеке (если явно не пытаетесь использовать регистры), стек находится в RAM.

Почитайте про "область видимости переменных". Это есть в книге по С, где-то в базовых разделах, в самых азах.

 

В динамике (RUN) отладчик сможет видеть только глобальные переменные, т.к. их зона видимости - глобальная.

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

Подобные куски кода принято оформлять в конструкциях в стиле #ifdef DEBUG ... #endif 

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


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

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

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

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

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

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

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

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

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

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