服务器程序处于无限循环中.如何检查它

A server program is on an infinite loop. How to check for it?

本文关键字:检查 何检查 程序 无限循环 服务器      更新时间:2023-10-16

服务器程序处于无限循环中。如何检查?

我的解决方案:

使用GDB检查控制循环的条件变量的值。

对于小程序是可以的。

对于大型程序如何做到这一点?

如果程序没有在GDB中运行,如何检测无穷循环?

谢谢

您可以使用某种形式的看门狗计时器。让程序定期输出一个字符或触摸一个文件,这样如果它陷入循环,一个单独的进程可以检测到看门狗没有更新,并杀死/重置进程。

很多微控制器的硬件都内置了这个,如果你不重置计时器,它们会自动重置。非常方便:)

如果程序在服务器上运行,您可以通过提供其pid将GDB进程附加到它。

例如使用ps:

查找进程的pid

ps ax | grep server_process

3789   ??  S      0:00.58 /usr/bin/server_process
3790   ??  S      0:00.58 /usr/bin/server_process
18002  ??  S      0:00.58 grep server_process

你可能想要孩子:

使用GDB附加到正在运行的进程

gdb /usr/bin/server_process 3790

…加载符号

gdb>

快乐追踪:)

当然,将server_process替换为您的程序名称和适当的路径:p

检测无限循环称为不可判定的停机问题。

所以原则上没有确定的方法来检测它