Не удалось загрузить общие библиотеки для linux-vdso.so.1. при отладке

Не загружать VDSO.so - это одна из известных ошибок, с которыми вы сталкиваетесь при использовании gdb и glibc > 2.2. Я обнаружил, что планировалось получить ремонт в gdb 7.5.1, но это не так. Хорошо, я нашел здесь работу здесь Здесь, но я не понял его, как его применить.

ОС: Arch Linux
IDE: создатель QT 3.0.82
Компилятор: GCC 4.8.2
NB: Я не уверен, нарушаю ли правила, включая ссылку выше

Ответ 1

Не загружать VDSO.so - это одна из известных ошибок, с которыми вы сталкиваетесь при использовании gdb и glibc > 2.2.

Нет, нет. Проблема здесь - просто бесполезное предупреждение, которое можно спокойно игнорировать.

Я нашел здесь работу здесь, но я не понял ее, как ее применять.

Вы не нашли "обходного пути". Вы обнаружили патч для GDB, который отключает предупреждение.

Чтобы применить его, используйте команду patch, а затем создайте свой собственный GDB. Но гораздо проще просто игнорировать предупреждение в первую очередь.

Ответ 2

Для тех, кто (как и я) просто хочет, чтобы gdb заткнулся о недостающих символах, попробуйте добавить это в свой ~/.gdbinit (но см. ниже предостережения):

set logging redirect on
set logging file /dev/null
python
def on_new_objfile(e):
    gdb.execute("set logging off")
    #print "new objfile:",e.new_objfile.filename
    if e.new_objfile.filename[:19] == "system-supplied DSO":
        gdb.execute("set logging on") # hide inevitable error message
gdb.events.new_objfile.connect(on_new_objfile)
end

Предостережения:

  • Монополизирует интерфейс set logging; если вы хотите использовать ведение журнала, вам необходимо изменить его, чтобы сохранить предыдущие параметры ведения журнала.
  • Жесткие коды "system-supplied DSO"; может быть хрупким по сравнению с новыми версиями ядра или gdb.
  • Предполагается, что по крайней мере один objfile будет загружен после vdso для последующего вывода; Мне было бы очень интересно, если бы кто-нибудь с лучшими знаниями внутренних систем gdb мог указать на фактический захват после символа-load-has-failed, поскольку на данный момент он рискует оставить вывод отключенным, когда программа запустится, если vdso является последним загруженным файлом objfile.