这些执行系统以50或60赫兹的频率进行帧处理,其使用Linux系统时钟,通过gettimeofday函数进行操作。
struct timeval {
time_t tv_sec; /* seconds */
suseconds_t tv_usec; /* microseconds */
};
同时,我们需要一个简单的非忙等算法来生成所需的调度程序。
我目前面临的问题是这些execs(可执行文件)会(看起来)随机失败。故障似乎表现为它们突然停止帧处理。我已经将所有运行时C++过程封装在“try{}catch(...){}”中,并且没有捕获到任何异常。同样,Ada例程也受到不被触发的异常处理程序的保护。
该exec通常会在运行30分钟到一小时以上后才会出现故障。没有任何内存增长的迹象(使用系统监视器)。我已经将Atego Rational图形调试器附加到已经运行的exec上,但没有用。当最终失败时,调用堆栈中没有任何内容,调试器日志中唯一的指示是应用程序“以状态255退出”。
我担心系统中的某个(Linux)系统例程或驱动程序正在调用Exit。显然有些东西正在调用exit!
有人有任何想法如何进一步调试此问题吗?
exit()
,以记录堆栈跟踪。参考链接 - Simon Wright