Я пытаюсь отладить программу в Ubuntu 12.04 (x86_64) LTS с файлом дампа ядра. В начале, команда «Ы» нормально, так же, как показано нижеgdb core dump не может видеть никаких символов после «sudo apt-get install libc6-dbg»
(gdb) bt
#0 0x00007f3b38e3f425 in raise() from /lib/x86_64-linux-gnu/libc.so.6
#1 0x00007f3b38e42b8b in abort() from /lib/x86_64-linux-gnu/libc.so.6
#2 0x00007f3b38e7d39e in ??() from /lib/x86_64-linux-gnu/libc.so.6
#3 0x00007f3b38e87b96 in ??() from /lib/x86_64-linux-gnu/libc.so.6
#4 0x00007f3b3947dff6 in std::string::assign(std::string const&)() from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
#5 0x000000000041cf5a in operator= (__str=..., this=<optimized out>) at /usr/include/c++/4.6/bits/basic_string.h:542
Я хочу, чтобы увидеть символ в libc.so.6, так что я установить libc6-DBG использованием
sudo apt-get install libc6-dbg
но после установки
libc6-dbg
Я получаю все, что неправильно, показывая в внизу:
(gdb) bt
#0 0x00007f3b38e3f425 in ??() from /lib/x86_64-linux-gnu/libc.so.6
#1 0x00007f3b38e42b8b in ??() from /lib/x86_64-linux-gnu/libc.so.6
#2 0x0000000000000003 in ??()
#3 0x00007fffca496804 in ??()
#4 0x000000000000000c in ??()
#5 0x00007f3b38f84eab in ??() from /lib/x86_64-linux-gnu/libc.so.6
#6 0x0000000000000002 in ??()
#7 0x0000000000000020 in ??()
#8 0x0000000000000000 in ??()
Я стараюсь remvoe lib6c-Dbg с
sudo apt-get remove libc6-dbg
, но не могу сделать какой-либо эффект.
да, 'libc.so.6' и' libstdC++. So.6' разные. Я копирую эти два файла с другого компьютера и использую 'set solib-absolute-prefix' в GDB. Все выглядит нормально. Но как я могу получить эти две библиотеки ('libc.so.6' и' libstdC++. So.6') восстановить на моем компьютере? Просто замените их просто? Если я просто заменю эти два файла напрямую, будут ли программы, использующие эти две библиотеки, сломаться? – user5232088
@ user5232088 В вашем вопросе вы не упоминали * ничего * о другом компьютере или копировании. Почему бы вам не изменить его, чтобы рассказать историю целиком (подробнее здесь). И нет, копирование libc.so.6 с другого компьютера - это очень плохая идея * и почти гарантированно сделает вашу систему не загружаемой. Не делай этого. –
У меня есть 2 компьютера, они работают с одной и той же системой (Ubuntu 12.04 (x86_64). Я использую один из них для 'sudo apt-get install libc6-dbg' и задаю вопрос, который я задал. Когда я заглядываю в/var/log/apt/history.log, я просто нахожу материал о libc6-dbg 'Start-Date: 2015-08-17 00:21:21 Командная строка: apt-get install libc6-dbg Установить: libc6-dbg: amd64 (2.15-0ubuntu10.12) End-Date: 2015-08-17 00: 21: 23 Итак, я копирую библиотеки с другого компьютера и использую их в GDB, и он получает правильный ответ. – user5232088