Hasty Briefsbeta

双语

Strace Tips for Better Debugging

a year ago
  • #Linux
  • #debugging
  • #strace
  • 不依赖libc构建软件以更好地理解Linux系统调用和内部机制。
  • 项目包括:极简Shell、终端贪吃蛇游戏、ARM64汇编HTTP服务器以及线程实现。
  • 使用strace进行调试并掌握丰富选项。
  • 关键strace选项:-f(跟踪子进程)、-v(完整结构体输出)、-s(字符串长度限制)、-o(保存日志文件)。
  • 其他实用strace标志:-yy(文件描述符详情)、-Y(显示PID对应命令名)、-t(时间戳)、-T(系统调用耗时统计)。
  • 调试辅助功能:-n(系统调用编号)、-i(指令指针)、-C(系统调用汇总统计)。
  • 对-g编译的程序使用-k获取堆栈跟踪。
  • 选择性系统调用追踪:-e(如%net网络类、%mem内存类)、-z(仅成功调用)、-Z(仅失败调用)、-P(路径专用调用)。
  • 通过-e inject实现系统调用篡改:支持错误注入、返回值修改、信号干扰或延迟模拟。
  • 特别适用于故障场景调试,注入的错误会在输出中标记为INJECTED。