繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM