Всем привет!
Люди! Просветите, как правильно сделать под Линуксом дебажную конфигурацию. Сам я Windows-программист, поэтому за глупые вопросы не бейте :-) Работаю под CentOS 5.5, GCC 4.1.2. Задался вопросом, как забилдить дебажный проект, чтобы и свой код был полностью пригодным для отладки и в библиотечный можно было входить. Билжу дебаг вот так:
COMPILE=g++ -c "-D_GLIBCXX_DEBUG" -g -O0 -fno-inline -o «$(OUTDIR)/$(*F).o» $(CFG_INC) $<
LINK=g++ -g -L/usr/lib/debug/usr/lib -o «$(OUTFILE)» $(ALL_OBJ)
Поставил дебажные RPM-пэкиджы. 1. Подключил руками репозиторий: CentOS-Debug.repo into /etc/yum.repos.d/
#Debug Info
[debuginfo]
name=CentOS-$releasever - DebugInfo
# CentOS-5
baseurl=http://debuginfo.centos.org/$releasever/$basearch/
gpgcheck=0
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5
protect=1
priority=1
2. Запустил yum --disablerepo «*» --enablerepo «debuginfo» install glibc-debuginfo glibc-debuginfo-common gcc-debuginfo
Либы встали. glibc 2.5.-49
Теперь, если добавляю -L/usr/lib/debug/usr/lib, то GDB заходит в исходники, правда, моё приложение падает с Segmentation fault во время завершения в CRT-коде в exit.
Однако, запускаю LDD и вижу, что приложение слинковано с релизными либами:
linux-gate.so.1 => (0x00fd7000)
libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x02839000)
libm.so.6 => /lib/libm.so.6 (0x00c54000)
libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x02702000)
libc.so.6 => /lib/libc.so.6 (0x00ad9000)
/lib/ld-linux.so.2 (0x00aba000)
В GDB также пытался смотреть: «info sharedlibrary». Тоже самое.
В общем, не понятен принцип, как оно в Линуксе должно работать и почему у меня начал падать код с Segmentation F. Приложение - простейшее тестовое консольное приложение.
С уважением, Алексей