Hasty Briefsbeta

双语

Where did my segfault go?

a day ago
  • #segmentation fault
  • #shell behavior
  • #debugging
  • 当 shell 回收因 SIGSEGV 而终止的子进程时,会打印段错误信息,而不是由崩溃的程序本身打印。
  • 在使用诸如 'bash -c' 这样的命令时,bash 可能直接 exec 到命令而不进行 fork,这会阻止 shell 作为父进程并打印错误信息。
  • 使用包装脚本或强制子 shell(例如使用括号)可以确保有一个 shell 作为父进程来检测并报告段错误。
  • 在崩溃命令后添加另一个命令(例如 'true')也可以防止 exec 优化,从而允许 shell 打印错误信息。