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