gpt4 book ai didi

c++ - 如何在 Linux 上调试 `SIGTERM`

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:53:25 24 4
gpt4 key购买 nike

我的程序在运行时收到 SIGTERM。原因不是内存(90% 的系统内存是空闲的),不是段错误,也没有其他自定义应用程序杀死它。 /var/log/messages 没有在任何地方提及终止的进程文件名和 PID。 GDB 无法调试该进程,因为它仅在大线程数(800 个线程)上崩溃,而 GDB 无法使用这样的线程数(好吧,它运行,但速度太低以至于它不会崩溃,它只会在高线程数时崩溃)。在 Linux 上是否有任何通用方法来了解将 SIGTERM 发送到特定程序的进程和原因?在 Linux 上如何调试此类问题?

最佳答案

这看起来很有趣。可以查出信号是谁发出的:

  • SIGTERM 安装信号处理程序
  • 指定 SA_SIGINFO 以便获得 siginfo_t 结构
  • 在处理程序中打印 pid:

    siginfo_t {
    pid_t si_pid; /* Sending process ID */
    }

为清楚起见,处理程序应如下所示:

void handler(int sig, siginfo_t *si, void *data);

关于c++ - 如何在 Linux 上调试 `SIGTERM`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25311448/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com