GDB: 入门

GDB: 最常用的命令在 gdb cheat sheet

  • 打印贴在电脑前,调试时候看一遍,很快就大致记住了

想要更好的体验?

  • GDB 本身也是一个编程语言
    • 它甚至支持 Python
    • 我们可以执行一些初始化代码 (-x)
  • 库函数也是代码
    • directory 命令增加源码路径
  • GDB 有许多前端
    • cgdb, pwndbg, vscode, ...
  • RTFM - M 比 ChatGPT 好用在于它不需要 prompt 且全面

🌶️ Futex: Fast Userspace muTexes

小孩子才做选择。操作系统当然是全都要啦!

  • Fast path: 一条原子指令,上锁成功立即返回
  • Slow path: 上锁失败,执行系统调用睡眠
    • 性能优化的最常见技巧
      • 看 average (frequent) case 而不是 worst case

POSIX 线程库中的互斥锁 (pthread_mutex)

  • 观察线程库中的 lock/unlock 行为
    1. Mutex 没有争抢的情况
    2. Mutex 有争抢的情况

🌶️ Futex: Fast Userspace muTexes (cont'd)

一个简单的设计:先在用户空间自旋

  • 如果获得锁,直接进入 (Fast Path,无系统调用)
  • 未能获得锁,系统调用 (Slow Path)
  • 解锁后用系统调用唤醒潜在的 Slow Path 线程
    • 更好的设计可以彻底消除 fast-path 的系统调用

RTFM (劝退)