#c #c #eclipse #debugging #android-ndk
#c #c #eclipse #отладка #android-ndk
Вопрос:
У меня есть предварительно созданная статическая библиотека (.a) и исходный код для нее. Как мне присоединить исходный код, чтобы я мог просматривать его во время отладки в Eclipse с помощью gdb?
Комментарии:
1. Это может помочь: sourceware.org/gdb/onlinedocs/gdb/Source-Path.html Обратите внимание, что вы также можете установить исходные каталоги в своем файле .gdbinit, что может помочь.
Ответ №1:
Вы не сможете просмотреть исходный код, если ваша библиотека не была скомпилирована с опцией отладки (gcc -g, при условии, что вы используете gcc). Проще всего было бы самостоятельно скомпилировать библиотеку в Eclipse в режиме отладки, а затем связать вашу программу с недавно скомпилированной библиотекой.
Ответ №2:
Я не могу комментировать, но я могу добавить более подробную информацию об ответе @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 предложит вам найти его:
или вы можете настроить его самостоятельно:
- Откройте «Конфигурации отладки» и отредактируйте текущую конфигурацию отладки:
- Когда вы откроете это меню, выберите свою конфигурацию (возможно, название проекта), а затем вкладку «Источник»:
- Нажмите кнопку «Добавить» и выберите «Сопоставление путей» (затем, конечно, нажмите «ОК»):
- Сопоставьте исходный путь (в разделе «Путь компиляции») с путем, в котором вы сохранили код (щелкните точки в поле «Путь к локальной файловой системе» — откроется проводник файловой системы):
На этом этапе Eclipse должен знать достаточно, чтобы пройти через все! Снова… это тогда и только тогда, когда библиотека была собрана с отладочными символами (да, «-g»)…
Ответ №3:
Возможным решением является компиляция исходного кода библиотеки в ваш проект, что позволит вам войти в библиотеку так, как если бы в ней находился ваш код (поскольку он находится на этом этапе). Я не знаю другого метода отладки кода библиотеки.