에러 메시지
Unable to open ‘raise.c’: File not found (file:///build/glibc-Cl5G7W/glibc-2.23/sysdeps/unix/sysv/linux/raise.c).
이 경우 우선 glibc 를 소스까지 다운로드
Building glibc without installing
To build glibc without installing you can do the standard configure and make e.g.
$ mkdir $HOME/src $ cd $HOME/src $ git clone git://sourceware.org/git/glibc.git $ mkdir -p $HOME/build/glibc $ cd $HOME/build/glibc $ $HOME/src/glibc/configure --prefix=/usr $ make
Do not run make install.
이후 아래 설명을 참고하여, 찾고자 하는 링크 위치를 심볼릭 링크 걸어주면 해결
To do full source code debugging of the C library on Ubuntu, you need to:
1) install the debuginfo version of libc6.
It’s probably already installed, but in case it isn’t, run sudo apt install libc6-dbg
.
2) download the source code corresponding to the installed version of the C library.
First, create a directory anywhere – I’ll use /opt/src
here. Then do the following:
sudo apt install dpkg-dev
cd /opt/src
apt source libc6
find $PWD -maxdepth 1 -type d -name 'glibc*'
Remember this name – it’ll be something like /opt/src/glibc-2.23
Now, run gdb, run your program until it stops, and at the gdb prompt do this:
(gdb) info source
Current source file is ../sysdeps/unix/sysv/linux/raise.c
Compilation directory is /build/glibc-KM3i_a/glibc-2.23/signal
So gdb is expecting the source code to be in a directory that’s different from where we put it. There are two ways to fix this:
a) move or use a symlink so that the source code is (or appears to be) in /build/glibc-KM3i_a/glibc-2.23
.
b) tell gdb how to substitute the correct source directory pathname:
(gdb) set substitute-path /build/glibc-KM3i_a/glibc-2.23 /opt/src/glibc-2.23
Now, go back to your frame, and gdb should show the source code line:
(gdb) frame 1
#1 0xb7e2fea9 in __GI_raise (sig=6) at ../sysdeps/unix/sysv/linux/raise.c:54
return INLINE_SYSCALL (tgkill, 3, pid, selftid, sig);
Comments