Ответ 1
Для установки каталога, содержащего файл символов, используйте
set debug-file-directory <directory>
и использовать
show debug-file-directory
чтобы показать, что в настоящее время установлено в качестве каталога, содержащего файлы символов.
Файлы символов автоматически считываются из этого каталога, если их имя (без пути) предоставляется двоичным файлом в терминах отладочной ссылки.
Чтобы добавить дополнительные символы, вы можете использовать add-symbol-file
.
(поскольку в данный момент GDB onlinedocs недоступен, я цитирую это здесь)
адрес файла имени файла добавления символа
адрес имени файла файла добавочного символа [-readnow] [-mapped]
add-символ файл имя файла -ssection адрес...
Команда add-symbol-file считывает дополнительную информацию из таблицы символов из имени файла. Вы бы использовали эту команду, когда имя файла было динамически загружено (каким-либо другим способом) в работающую программу. адрес должен быть адресом памяти, по которому файл был загружен; GDB не может понять это для себя. Вы можете дополнительно указать произвольное количество пар адресов -ssection address, чтобы дать явное имя раздела и базовый адрес для этого раздела. Вы можете указать любой адрес в качестве выражения.
Таблица символов файла с именем файла добавляется в таблицу символов, первоначально считанную с помощью команды symbol-file. Вы можете использовать команду add-symbol-file любое количество раз; прочитанные таким образом новые символьные данные продолжают добавлять к старым. Чтобы вместо этого удалить все старые символьные данные, используйте команду symbol-file без каких-либо аргументов.
Хотя filename обычно является файлом общей библиотеки, исполняемым файлом или каким-либо другим объектным файлом, который полностью перемещен для загрузки в процесс, вы также можете загрузить символическую информацию из перемещаемых файлов .o, если:
- символьная информация файла относится только к символам компоновщика, определенным в этом файле, а не к символам, определенным другими объектными файлами,
- каждый раздел, на который ссылается символическая информация файла, фактически загружен в подчиненный файл, как он отображается в файле, и
- Вы можете определить адрес, по которому был загружен каждый раздел, и предоставить их команде add-symbol-file.
Некоторые встроенные операционные системы, такие как Sun Chorus и VxWorks, могут загружать перемещаемые файлы в уже запущенную программу; такие системы, как правило, облегчают выполнение вышеуказанных требований. Однако важно понимать, что многие собственные системы используют сложные процедуры линковки (например, факторинг секций .linkonce и сборка таблицы конструктора C++), которые затрудняют выполнение требований. В общем, нельзя предполагать, что использование add-symbol-file для чтения символической информации о перемещаемом объектном файле будет иметь тот же эффект, что и обычное связывание перемещаемого объектного файла с программой.
add-symbol-file не повторяется, если вы нажмете после его использования.
Вы можете использовать
-mapped' and
-readnow' так же, как с командой symbol-file, чтобы изменить способ, которым GDB управляет информацией таблицы символов для имени файла.