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 打印错误信息。