LINUX.ORG.RU

Сообщения alexf2

 

GCC, C++: работа с дебажным GLIBC

Форум — Development

Всем привет!

Люди! Просветите, как правильно сделать под Линуксом дебажную конфигурацию. Сам я 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/

#baseurl=

http://debuginfo.centos.org/

$releasever/

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. Приложение - простейшее тестовое консольное приложение.

С уважением, Алексей

alexf2
()

RSS подписка на новые темы