Hi, All!
Давненько не брал я в руки шашек... А сейчас вот взял, и был неприятно удивлен сообщением "no debugging symbols found".
Извращений - НИКАКИХ! Все просто как дрова:
gcc -g -o example4 -lX11 example4.c
./example4 (падает)
gdb --core=core.example4
- и получаю то самое сообщение об отсутствии debugging symbols
Линух - Scientific 5.1 ~= классический RHEL , 32-битный
$ file example4
example4: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.6.9, dynamically linked (uses shared libs), for GNU/Linux 2.6.9, not stripped
Глазками его смотрю: вроде как символы внутрях имеются... И по размеру он почти втрое больше, чем если без -g компилить.
Вопрос: какого черта ему (gdb) еще надо ? Почему указания -g при компиляции стало недостаточно ?
gdb (no debugging symbols found)
Модератор: Модераторы разделов
-
- Модератор
- Сообщения: 1786
- Статус: Матёрый линуксоид
- ОС: Debian testing/unstable
Re: gdb
А приведите точное сообщение, что говорит gdb? А то есть мысль, что с самим бинарником всё нормально, а символы не найдены для какой-нибудь библиотеки (libX11 той же, или ещё какой).
Работа: Ubuntu 9.10
Дом: Debian testing/unstable и на всякий случай winxp в virtualbox.
Для разнообразия: моя домашняя страница -http://iportnov.ru
Дом: Debian testing/unstable и на всякий случай winxp в virtualbox.
Для разнообразия: моя домашняя страница -http://iportnov.ru
-
- Сообщения: 80
Re: gdb
ОК, делаем тупейший тест, чтоб Хы не поминать всуе...
[sl@ms tt]$ cat hellocore.c
#include <stdio.h>
int main() {
printf("Hello, core!\n");fflush(stdout);
printf("Hello, core %s\n",-1);
}
[sl@ms tt]$ gcc -g -o hellocore hellocore.c
[sl@ms tt]$ ./hellocore
Hello, core!
Segmentation fault (core dumped)
[sl@ms tt]$ gdb --core=core.hellocore.1269896991.18606
GNU gdb Red Hat Linux (6.5-25.el5rh)
Copyright © 2006 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB. Type "show warranty" for details.
This GDB was configured as "i386-redhat-linux-gnu".
(no debugging symbols found)
Using host libthread_db library "/lib/libthread_db.so.1".
Core was generated by `./hellocore'.
Program terminated with signal 11, Segmentation fault.
#0 0x006fbe0b in ?? ()
(gdb) bt
#0 0x006fbe0b in ?? ()
#1 0x006ce1ef in ?? ()
#2 0xffffffff in ?? ()
#3 0x0804852d in ?? ()
#4 0x0000000c in ?? ()
#5 0xbffa7d3c in ?? ()
#6 0xb7f20000 in ?? ()
#7 0x0068f1a4 in ?? ()
#8 0x00000000 in ?? ()
(gdb)
Причем, если запускаю из отладчика, то картина другая:
[sl@ms tt]$ gdb hellocore
GNU gdb Red Hat Linux (6.5-25.el5rh)
Copyright © 2006 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB. Type "show warranty" for details.
This GDB was configured as "i386-redhat-linux-gnu"...Using host libthread_db library "/lib/libthread_db.so.1".
(gdb) run
Starting program: /tmp/tt/hellocore
Hello, core!
Program received signal SIGSEGV, Segmentation fault.
0x006fbe0b in strlen () from /lib/libc.so.6
(gdb) bt
#0 0x006fbe0b in strlen () from /lib/libc.so.6
#1 0x006ce1ef in vfprintf () from /lib/libc.so.6
#2 0x006d38d3 in printf () from /lib/libc.so.6
#3 0x08048442 in main () at hellocore.c:5
[sl@ms tt]$ cat hellocore.c
#include <stdio.h>
int main() {
printf("Hello, core!\n");fflush(stdout);
printf("Hello, core %s\n",-1);
}
[sl@ms tt]$ gcc -g -o hellocore hellocore.c
[sl@ms tt]$ ./hellocore
Hello, core!
Segmentation fault (core dumped)
[sl@ms tt]$ gdb --core=core.hellocore.1269896991.18606
GNU gdb Red Hat Linux (6.5-25.el5rh)
Copyright © 2006 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB. Type "show warranty" for details.
This GDB was configured as "i386-redhat-linux-gnu".
(no debugging symbols found)
Using host libthread_db library "/lib/libthread_db.so.1".
Core was generated by `./hellocore'.
Program terminated with signal 11, Segmentation fault.
#0 0x006fbe0b in ?? ()
(gdb) bt
#0 0x006fbe0b in ?? ()
#1 0x006ce1ef in ?? ()
#2 0xffffffff in ?? ()
#3 0x0804852d in ?? ()
#4 0x0000000c in ?? ()
#5 0xbffa7d3c in ?? ()
#6 0xb7f20000 in ?? ()
#7 0x0068f1a4 in ?? ()
#8 0x00000000 in ?? ()
(gdb)
Причем, если запускаю из отладчика, то картина другая:
[sl@ms tt]$ gdb hellocore
GNU gdb Red Hat Linux (6.5-25.el5rh)
Copyright © 2006 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB. Type "show warranty" for details.
This GDB was configured as "i386-redhat-linux-gnu"...Using host libthread_db library "/lib/libthread_db.so.1".
(gdb) run
Starting program: /tmp/tt/hellocore
Hello, core!
Program received signal SIGSEGV, Segmentation fault.
0x006fbe0b in strlen () from /lib/libc.so.6
(gdb) bt
#0 0x006fbe0b in strlen () from /lib/libc.so.6
#1 0x006ce1ef in vfprintf () from /lib/libc.so.6
#2 0x006d38d3 in printf () from /lib/libc.so.6
#3 0x08048442 in main () at hellocore.c:5
-
- Бывший модератор
- Сообщения: 8259
- Статус: Маньяк
- ОС: Arch, Fedora, Ubuntu
Re: gdb
StanislavL
"no debugging symbols found" относится к /lib/libc.so.6
"no debugging symbols found" относится к /lib/libc.so.6
-
- Администратор
- Сообщения: 5405
- ОС: Gentoo
Re: gdb
core-файл принято открывать так:
$ gdb программа core-файл
поскольку сам core-файл отладочных символов обычно не содержит, и ему надо их грузить откуда-то ещё.
$ gdb программа core-файл
поскольку сам core-файл отладочных символов обычно не содержит, и ему надо их грузить откуда-то ещё.
-
- Сообщения: 80
Re: gdb
Спасибо, помогло.
Хотя и непонятно слегка... N лет назад я запускал 'gdb --core=core', и он все распрекрасно находил сам. Да и сейчас - он ведь находит выполняемый файл без моей подсказки, что ему мешает оттуда символы считать ? Ну черт с ним, пускай остается на совести авторов.