Есть ли способ использовать символические имена для отладочного наблюдения за регистрами RISC-V?

Повторная отладка RISC-V CH32V2xx/CH32V3xx

Есть ли способ посмотреть, скажем, «RCC_CFGR0», а не «* 0x40021004»?

Например, добавить определения в GDB?

(программа скомпилирована с опцией -g и оптимизирована для отладки, IDE 2.3.6)

, 👍1

Обсуждение

Вы спрашиваете, существует ли отладочное программное обеспечение, которое может отслеживать символы?, @jsotola

@jsotola Спрашиваю, можно ли добавить символы в GDB в среде Arduino., @Spehro Pefhany

Как вы используете GDB с вашим скетчем Arduino?, @the busybee

Обычно вы загружаете неразрезанный ELF-файл в GDB, он содержит символы вашего исполняемого файла, включая имена регистров. Почему это не работает?, @the busybee

Переменные, используемые в скетче, отображаются в ELF-файле, но не переменные, используемые в библиотеках, не говоря уже о тех, которые определены как структурные элементы в глубинах ядер, которые я ищу. Они упоминаются в файле "... AppData\Local\Arduino15\packages\WCH\hardware\ch32v\1.0.4\system\CH32V30x\SRC\Peripheral\inc\ch32v30x.h", например, как RCC->CFGR0., @Spehro Pefhany

Вы проверили, что ELF собран с опцией отладки?, @the busybee

Другим вариантом может быть отдельный файл символов. Что показало ваше исследование документации GDB?, @the busybee

(ОТ: Если вы хотите обратиться к какому-либо комментатору, пожалуйста, добавьте тег «@». Я вернулся совершенно случайно.), @the busybee

@thebusybee Да, опция -g и оптимизация для отладки. С опциями GDB я пока не продвинулся. Наткнулся на [этот](https://stackoverflow.com/questions/20380204/how-to-load-multiple-symbol-files-in-gdb) вопрос, но не знаю, как создать совместимый формат файла с нуля., @Spehro Pefhany

Как обычно, пожалуйста, [отредактируйте] свой вопрос, чтобы внести уточнения и новую информацию. Комментарии не предназначены для этого. Пока вы этим занимаетесь, подумайте о том, чтобы добавить минимальный и воспроизводимый пример, набросок и, возможно, что-то ещё, например, внешние команды. Пожалуйста, помогите нам помочь вам., @the busybee


1 ответ


Лучший ответ:

2

Существуют сложные способы внедрения символов в таблицу символов GDB, например, с помощью скрипта Python или создания ELF-файла из программы, созданной с использованием поддельных переменных специально для этой цели, но для этой простой задачи мы можем использовать концепцию GDB «удобных переменных». Они существуют только в течение сеанса GDB.

Введите что-то вроде следующей строки для каждого символа из консоли отладчика Arduino 2.x:

set $RCC_CFGR0 = (беззнаковое целое)0x40021004

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

Чтобы отобразить переменные в шестнадцатеричном формате, введите (в консоли отладчика)

установить выходной радикс 16

,