---
# System prepended metadata

title: Debian のlibcにdebug symbolをつける方法

---

# Debian のlibc, libstdc++にdebug symbolをつける方法

## libc

https://ftp.tsukuba.wide.ad.jp/Linux/debian/pool/main/g/glibc から`libc-dbg`を取ってくる
以下`libc6-dbg_2.36-9+deb12u13_amd64.deb`を例にとる


1. 展開する
```sh
ar x libc6-dbg_2.36-9+deb12u13_amd64.deb
tar -xvf data.tar.xz
```

2. BuildIDを取ってくる

```
$ file libc.so.6
libc.so.6: ELF 64-bit LSB shared object, x86-64, version 1 (GNU/Linux), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=6196744a316dbd57c0fd8968df1680aac482cec4, for GNU/Linux 3.2.0, stripped
```
今回は`6196744a316dbd57c0fd8968df1680aac482cec4`

3. unstripする

```
mv usr/lib/debug/.build-id/61/96744a316dbd57c0fd8968df1680aac482cec4.debug .
eu-unstrip libc.so.6 96744a316dbd57c0fd8968df1680aac482cec4.debug
mv 96744a316dbd57c0fd8968df1680aac482cec4.debug libc.so.6.unstrip
```

4. `cannot find matching section for`といわれたら

```
set debug-file-directory ./usr/lib/debug/.build-id/
set substitute-path ../../../../src/ /path/to/gcc/
```

## libstdc++

`strings libstdc++.so.6`をして以下の文字列を探す

```
{"type":"deb","os":"debian","name":"gcc-14","version":"14.2.0-19","architecture":"amd64"}
```

見つけたら以下から`libstdc++6-14-dbg_14.2.0-19_amd64.deb`とかをダウンロードする

https://ftp.tsukuba.wide.ad.jp/Linux/debian/pool/main/g/gcc-14

libcのように展開して`usr/lib/x86_64-linux-gnu/debug/libstdc++.so.6`を取ってくる

## libgcc

http://deb.debian.org/debian-debug/pool/main/g/gcc-14/libgcc-s1-dbgsym_14.2.0-19_amd64.deb からdebを取ってくる

```
set substitute-path ../../../src/ /home/rona/me/ctf/gcc/
```