![按信号过滤数百个核心转储](https://linux22.com/image/158452/%E6%8C%89%E4%BF%A1%E5%8F%B7%E8%BF%87%E6%BB%A4%E6%95%B0%E7%99%BE%E4%B8%AA%E6%A0%B8%E5%BF%83%E8%BD%AC%E5%82%A8.png)
如果我在一个目录中有数百个核心转储,并且希望将其过滤为仅由特定信号生成的核心转储,而不必一次在 GDB 中手动打开每个核心转储,有没有办法做到这一点?
GDB 确实允许您通过 -ex 标志传递命令,但 GDB 的输出不会进入控制台,所以我不能只在所有文件上运行它并 grep 结果。
答案1
部分答案:
我注意到您正在使用条件子句,因此如果尚未生成核心转储,最简单的方法是在生成它们时在名称中包含信号。man 5 core
详情请参阅。
如果您已经拥有它们,请查看核心格式的详细信息(参见例如这里)。我假设信号编号位于各个siginfo_t
注释条目中(但没有验证这一点),因此以任何对您来说足够快的方式提取它们(如果需要,可以自定义 C 程序),并过滤您想要的信号。