Путь к исходному файлу не включен в раздел отладки файла ELF.C++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Путь к исходному файлу не включен в раздел отладки файла ELF.

Сообщение Anonymous »

Я пытаюсь разработать приложение C++ для RTEMS RTOS, но у меня возникли проблемы с отладкой. У них есть базовый пример мигания светодиодом, написанный на C, который я могу отладить. Однако преобразование этого в C++ приводит к тому, что gdb не сможет найти исходный файл.
Если я подключу gdb к приложению C и запущу источники информации, Я вижу свой файл init.c прямо вверху, за которым следуют все источники RTMS. Повторяя это для приложения C++, init.cpp не упоминается. Используя objdump для файлов exe/ELF, я вижу в debug_info и debug_str путь к init.c. Но в приложении C++ нет упоминания о пути к init.cpp.
Приложение C и приложение C++ вложены в один и тот же каталог верхнего уровня и используют тот же файл wscript для настройки компилятора. Оба приложения компилируются с использованием -Og и -g. Что может помешать записи исходного пути в раздел отладки файла ELF?

Соответствующие разделы wscript:Сценарий верхнего уровня
def build(bld):
rtems.build(bld)
bld.env.CFLAGS += ['-Og','-g']

Скрипт исходного уровня
def build(bld):
# Create include path nodes
board_inc = bld.root.find_node('/home/kyle/rtems-core/rtems/bsps/arm/atsam/contrib/libraries/libboard/')
chip_inc = bld.root.find_node('/home/kyle/rtems-core/rtems/bsps/arm/atsam/include/libchip/')
component_inc = bld.root.find_node('/home/kyle/rtems-core/rtems/bsps/arm/atsam/include/libchip/include/samv71/component/')
print(chip_inc.abspath())

rtems.build(bld)

bld(features = 'cxx cxxprogram',
target = 'timerpp.exe',
source = ['init.cpp'],
includes = ['.', board_inc, chip_inc, component_inc])

Вот флаги компиляции, отмеченные objdump для версии C (проверьте строку DW_AT_producer):
: Abbrev Number: 57 (DW_TAG_compile_unit)
DW_AT_producer : (indirect string, offset: 0x939): GNU C17 13.2.1 20240412 (RTEMS 6, RSB 89172ba5819a12ea22f49a134008e949daae6c94, Newlib 176b19f) -ftls-model=local-exec -mthumb -mcpu=cortex-m7 -mfpu=fpv5-d16 -mfloat-abi=hard -march=armv7e-m+fp.dp -g -Og
DW_AT_language : 29 (C11)
DW_AT_name : (indirect string, offset: 0x760): ../../led/timer/init.c
DW_AT_comp_dir : (indirect string, offset: 0x2a93): /home/kyle/rtems-core/rtems-examples/build/arm-rtems6-atsamv

И то же самое для версии C++:
: Abbrev Number: 51 (DW_TAG_compile_unit)
DW_AT_producer : (indirect string, offset: 0x914): GNU C17 13.2.1 20240412 (RTEMS 6, RSB 89172ba5819a12ea22f49a134008e949daae6c94, Newlib 176b19f) -ftls-model=local-exec -mthumb -mcpu=cortex-m7 -mfloat-abi=hard -march=armv7e-m+fp.dp -g -g -g -O2 -O2 -O2 -fbuilding-libgcc -fno-stack-protector -fno-inline -fexceptions -fvisibility=hidden
DW_AT_language : 29 (C11)
DW_AT_name : (indirect string, offset: 0x227): ../../../../../../gnu-mirror-gcc-54a235e/libgcc/config/arm/unwind-arm.c
DW_AT_comp_dir : (indirect string, offset: 0x69): /home/kyle/rtems-core/rtems-source-builder/rtems/build/arm-rtems6-gcc-54a235e-newlib-176b19f-x86_64-linux-gnu-1/build/arm-rtems6/thumb/cortex-m7/hard/libgcc


Подробнее здесь: https://stackoverflow.com/questions/786 ... ug-section
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C++»