Не делайте этого:
objcopy --only-keep-debug lib_mylib.o lib_mylib.o.debug
(Работает только для общих библиотек.)
Сделайте это вместо:
cp lib_mylib.o lib_mylib.o.debug
Еще проще сохранить lib_mylib.o
нетронутым и удалить символы отладки из исполняемого файла во время соединения:
gcc -g driver.c -o driver -L. -l_mylib -Wl,-s
И еще проще: свяжите двоичный файл с информацией отладки и сохраните его для отладки, но используйте раздетый исполняемый файл там, где вам нужно это будет удалено:
gcc -g driver.c -o driver-dbg -L. -l_mylib &&
strip -g -o driver driver-dbg
С вышеприведенным вам не нужно будет add-symbol-file
, просто укажите GDB на driver-dbg
, и он все сделает автоматически.