C++ 服务器程序位于无限循环上。如何检查它?
服务器程序位于无限循环上。如何检查它 我的解决方案: 使用GDB检查控制循环的条件变量的值 小程序也可以 对于大型程序如何做到这一点 如果程序没有在GDB中运行,如何检测无止境循环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/
谢谢如果程序在服务器上运行,您可以通过提供其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您可以使用某种形式的。让程序周期性地输出一个字符或触摸一个文件,这样,如果它陷入循环,一个单独的进程可以检测到看门狗没有被更新,并终止/重置进程
很多微控制器都在硬件中内置了这个功能,如果不重置定时器,它们会自动重置。它非常方便:)检测无限循环称为不可判定循环
因此,原则上没有确定的检测方法。听起来像是停车问题?