как использовать --add-gnu-debuglink для хранения файлов символов gdb в смонтированной папке

Это настройка Ubuntu.

Короче говоря, если я использую команду «objcopy --add-gnu-debuglink=/mntsymbols/binsymbol/prog.debug prog», она не работает, и при выполнении gdb символы не найдены. gdb получает символы, только если prog.debug находится в той же папке, что и prog. Все работает после того, как я делаю gdb> файл символов /mntsymbols/binsymbol/prog.debug

/mntsymbols — это смонтированная папка с удаленной машины. прога зачищена от бинарника. prog.debug - это файл символов отладки для программы, созданный с помощью "objcopy --only-keep-debug".

Я пытаюсь настроить сервер символов gdb для простой тестовой программы. sys1 — это сервер символов gdb. Сохранит файлы символов как sys1:/root/symboldir/testp1symbols/prog.debug sys1:/root/symboldir/testp1symbols/shared1.so.debug

Смонтирую sys1:/root/symboldir/ на sys2, и я смогу отлаживать с помощью gdb на sys2. как этого добиться с помощью --add-gnu-debuglink или любым другим способом.


person devdebug    schedule 17.05.2017    source источник
comment
Вы пробовали этот ответ?   -  person login_not_failed    schedule 17.05.2017
comment
В соответствии с этим ответом рекомендуется перенести удаленный файл на локальный, а затем использовать его. где, поскольку я специально хочу использовать файл символов удаленной отладки. Также команда file позволяет загрузить только один файл символов. где, как правило, программе может потребоваться более одного файла символов, если она использует общие файлы.   -  person devdebug    schedule 18.05.2017
comment
Кроме того, в моем случае монтирование удаленного каталога (содержащего файлы символов) не помогло.   -  person devdebug    schedule 18.05.2017
comment
Я использую set solib-search-path /path/to/the/shared/libs   -  person Juan Gonzalez Burgos    schedule 27.05.2021


Ответы (1)


Документация.

Вы должны использовать --add-gnu-debuglink=prog.debug и установить debug-file-directory в GDB на /mntsymbols/binsymbol.

Как вы это настроили, GDB, вероятно, ищет prog.debug в /usr/lib/debug/mntsymbols/binsymbol. Вы можете убедиться в этом, запустив сам GDB под strace -e open.

person Employed Russian    schedule 18.05.2017
comment
Когда я сделал --add-gnu-debuglink=prog.debug, мне пришлось оставить prog.debug в том же каталоге, иначе команда не удалась. Затем я сохранил prog.debug в каталоге по умолчанию /usr/lib/debug, а также в /mntsymbols/binsymbol. При использовании gdb «установил каталог отладочного файла» и убедился, что использовал «показать каталог отладочного файла». (Я также добавил это в ~/.gdbinit). Но все равно не находит символы. Может быть, мне нужно перезагрузить все символы после установки каталога отладочных файлов, я прочитал его, но потерял команды. - person devdebug; 18.05.2017
comment
Я не пробовал strace-трюк, о котором вы упомянули. попробую и выложу. - person devdebug; 18.05.2017
comment
В моем случае, если я установил для каталога отладочных файлов значение /some-dir, тогда gdb искал файл символов в /some-dir/dir1/dir2/ для исходного файла в /dir1/dir2. - person Alex Che; 23.04.2019