Effective-GDB!

真的有人会用 GDB 调试吗? 是旧朝遗老显摆, 还是没事找事? IDE 的 Debugger 不好用吗...

估计做完CSAPP的Lab就把GDB丢掉了, 或者在OS作业里耍耍, 又或者去打CTF了, 别的想不到 GDB 能干什么了, 吗?

可能你没有了解完全 GDB 可以做的一切. 你可能觉得 GDB 一点也不直观, 那为什么不试试 TUI; 你可能觉得反复键入指令太麻烦, 为什么不用 Python 写脚本...

不过话又说回来, 学习 GDB, 其实学习更主要, 学会调试的技巧, 总会在未来的某一天帮助到你.

Pwndbg

试试 GDB 的插件: pwndbg

反汇编更加直观

TUI mode

怎么在 GDB 里面打断点? 要是不切屏, 你是获取不到代码信息的. 这时候你可能会想到 list

1
2
3
4
5
6
7
8
9
10
11
pwndbg> list main
25 }
26 } while (!sorted);
27 }
28
29 int main(void)
30 {
31 long arr[32];
32 int i = 0;
33 srand(time(NULL));
34 for (i = 0; i < rand() % sizeof arr; i++)

但实际上 TUI 模式会给出一个更加人性化的用户界面. tui enable 或者 ctrl+x+a