Arch Linux 下使用 pwndbg

pwndbg 的安装: pacman -S pwndbg 然后添加 source /usr/share/pwndbg/gdbinit.py~/.gdbinit

然而要在 Arch Linux 下愉快地使用 pwndbg, 还要解决以下问题:

  • Arch Support - Roadmap 搁了快一年的问题, 主要是 Arch 下没有 libc6-dbg 这种包, 要调试符号只能自己编译...
  • Python exception under gdb-8.2-2 上游 gdb 的问题, 8.3 应该会修复, 不过可以按链接所示的方法临时 patch 一下 gdb 8.2.1 已 fix

这里解决第一个问题, 利用棒棒的 ABS (Arch Build System)

1
2
3
4
5
6
7
8
9
10
11
12
13
svn checkout --depth=empty svn://svn.archlinux.org/packages
cd packages
svn update glibc

# Build glibc (Fix #340)
cd glibc/repos/core-x86_64
## For Chinese users
## sed -i 's#ftp.gnu.org#mirrors.tuna.tsinghua.edu.cn#' PKGBUILD
# generate detached debugging symbols
sed -i 's#!strip#debug#' PKGBUILD
# skip check
makepkg --skipchecksums --nocheck --skippgpcheck
sudo pacman -U *.pkg.tar.xz

缺点是每次升级 glibc 的时候要自己重新编译一遍......

(听说 Debug Symbols 的支持已经在进行中了?)

后记

今天学长按照这个试了一下, 编译了一个下午都没编译完(然后怒转 mint ). 然后我才想起来第一次我也遇到了这个问题: 其实编译早就完成了, 只是一直在跑测试......(大概是因为 glibc 非常重要, 所以测试很多....) (不过测试虽然慢但我当时似乎也跑完了) (可能是因为我改了 BUILDDIR ?)

要取消测试可以简单地给 makepkg 添加 --nocheck 参数

或者一劳永逸(暴力)的办法: 在 /etc/makepkg.conf 中将 BUILDENV 中的 check 改为 !check (因为我被坑了一次后就加上了, 然后就忘了这个坑...)

P.S. 顺便也可以根据这篇文章 Makepkg_(简体中文)#编译结果优化 优化一下其他参数, 主要是 BUILDDIR ,CFLAGS, CXXFLAGSMAKEFLAGS