[英]A server program is on an infinite loop. How to check for it?
服务器程序处于无限循环中。 如何检查?
我的解决方案
使用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
检测无限循环称为停止问题 ,这是不可判定的。
因此原则上没有确定的方法来检测它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.