Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 服务器程序位于无限循环上。如何检查它?_C++_Loops_Gdb_Infinite Loop - Fatal编程技术网

C++ 服务器程序位于无限循环上。如何检查它?

C++ 服务器程序位于无限循环上。如何检查它?,c++,loops,gdb,infinite-loop,C++,Loops,Gdb,Infinite Loop,服务器程序位于无限循环上。如何检查它 我的解决方案: 使用GDB检查控制循环的条件变量的值 小程序也可以 对于大型程序如何做到这一点 如果程序没有在GDB中运行,如何检测无止境循环 谢谢如果程序在服务器上运行,您可以通过提供其pid将GDB进程附加到该程序 例如,使用ps查找流程的pid: ps ax | grep服务器|进程 3789 ?? S 0:00.58 /usr/bin/server_process 3790 ?? S 0:00.58 /usr/bin/

服务器程序位于无限循环上。如何检查它

我的解决方案:

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

小程序也可以

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

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


谢谢

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

例如,使用ps查找流程的pid:

ps ax | grep服务器|进程

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>
快乐追踪:)


当然,用您的程序名和相应的路径替换服务器进程:p

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


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

检测无限循环称为不可判定循环


因此,原则上没有确定的检测方法。

听起来像是停车问题?