Как мне присоединить исходные коды к предварительно собранной статической библиотеке C в Eclipse

0

У меня есть встроенная статическая библиотека (.a) и исходный код для нее. Как подключить источник, чтобы я мог выполнить его во время отладки в Eclipse с помощью gdb?

  • 1
    Это может помочь: sourceware.org/gdb/onlinedocs/gdb/Source-Path.html Обратите внимание, что вы можете также установить исходные каталоги в файле .gdbinit, что может помочь.
Теги:
debugging
android-ndk

3 ответа

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

Я не могу комментировать, но я могу добавить более подробный ответ WRT @massimo. Быстро, это не поможет, если у вас нет библиотеки, скомпилированной с помощью "-g". Но там больше, чем...

В мире GCC, здание с "-g" делает несколько вещей. В дополнение ко всем символам, которые он хранит, он также сохраняет исходное местоположение исходного каталога и файла кода в разделе ".debug_info":

objdump -g liblib_g.a 

lib_g.o:     file format elf64-x86-64

Contents of the .debug_info section:

  Compilation Unit @ offset 0x0:
   Length:        0x8d (32-bit)
   Version:       4
   Abbrev Offset: 0x0
   Pointer Size:  8
 <0><b>: Abbrev Number: 1 (DW_TAG_compile_unit)
     <c>   DW_AT_producer    : (indirect string, offset: 0x0): GNU C 4.8.1 -mtune=generic -march=x86-64 -g -fstack-protector    
    <10>   DW_AT_language    : 1    (ANSI C)
    <11>   DW_AT_name        : (indirect string, offset: 0xec): lib.c   
    <15>   DW_AT_comp_dir    : (indirect string, offset: 0x86): /home/me/path/to/my/archive 
    <19>   DW_AT_low_pc      : 0x0  
    <21>   DW_AT_high_pc     : 0x15 
    <29>   DW_AT_stmt_list   : 0x0  
    ...it goes on and on...

Когда это будет сделано, GDB будет знать, где находится исходный код, и, конечно же, выполнение кода будет работать.

Теперь, что, если он был построен с помощью "-g", но где-то еще (например... какой-то другой компьютер...)? Ну, когда вы попытаетесь выполнить этот код, Eclipse предложит вам найти его:

Изображение 174551

или вы можете настроить его самостоятельно:

  • Откройте "Конфигурации отладки" и отредактируйте текущую конфигурацию отладки:

Изображение 174551

  • Когда вы откроете это меню, выберите свою конфигурацию (возможно, название проекта), а затем вкладку "Источник":

Изображение 174551

  • Нажмите кнопку "Добавить" и выберите "Отображение траектории" (тогда, конечно, нажмите "ОК"):

Изображение 174551

  • Сопоставьте исходный путь (в разделе "Путь компиляции") к пути, в котором вы сохранили код (щелкните точки в "Локальном пути к файловой системе" - это приведет к просмотру файловой системы):

Изображение 174551

На данный момент Eclipse должен знать достаточно, чтобы пройти через все! Опять же... это тогда и только тогда, когда библиотека была построена с помощью отладочных символов (да, "-g")...

6

Вы не можете пройти через исходный код, если ваша библиотека не была скомпилирована с опцией debug (gcc -g, если вы используете gcc). Проще всего было бы собрать библиотеку самостоятельно в Eclipse, в режиме отладки, а затем связать свою программу с недавно скомпилированной библиотекой.

1

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню