QNX系统在什么情况下会死机?

我的系统有时会死机,但是机率很小(几十台机器只有1、2台出现),这时我又没有方法检查到底是什么原因造成的,怎么来查呢?

死机的原因只怕太多了。特别如果是一个系统经过裁减。应用程序很大,经过多人的修改。谁也不知道某个角落里有什么。

我想先要确定是硬件的影响,还是软件的问题。
出问题的机器是某几台固定的机器,还是随机出现,每台机器都有可能?

如果是硬件的问题,是否可以互换一下硬件,看看能不能缩小出问题范围。

如果是软件,那你们是否改过一些驱动,操作某些硬件。或中断处理程序是否有需要检查的地方。是否和内存泄漏有关系?

系统死机前会有日志吗?可以查询吗?另外内存泄露会导致系统死机吗?qnx不是说应用程序不会导致系统死机吗

不知道你所谓的死机是指什么。是机器没响应,还是重启了。
日志不一定有。进程死了可能会有日志,但如果是系统死了。它也来不及做什么日志。
内存泄露最后当然是没有内存用了。所有程序都跑不了了。算是死机了吧。
QNX保证的是一个进程不会影响别一个进程,通过内存保护。最简单来说,你的进程不能通过一个乱指的指针把别人的进程破坏。
很多事情,如内存泄露或死锁等还是要人手去解决。目前的水平操作系统还不能帮你做这些事情。或能做但系统开销太大了,得不偿失,所以没人去做。

你的情况,你还是先定位一下错误吧。是硬件,是驱动,是中断处理程序,是死锁,还是一般应用程序问题。不然很难给你什么建议。

键盘鼠标都没有响应,网络也不通算是死机了吧,现在就是没办法定位,平时监视内存也没有发现有内存增长,这可怎么分析呢?

nakeyfish说得不错,“死机”应改怎么理解。

从操作系统的角度来讲,“死机”是kernel crash,因为内核停掉了,用户再没有别的办法,只能重启。

用户同样可以写一个 for(;; ); 的死循环程序,在最高优先级上运行。这时候,你也可以见到“键盘鼠标都没有响应,网络也不通”的现像,但从操作系统角度来讲,它完全工作正常,正在不断执行一个高优先级的程序。这也算是微内核的特点吧。

所以在嵌入式系统里面,“系统不响应”是常见的错误,怎样找到背后的原因,才是重点所在。

以你的情形,你可以试试把devc-con在高优先级上运行 (on -p 255 devc-con), 假设你希望键盘可以在终端上响应。还有就是可以运行一个高优先级的shell,甚至运行一个高优先级的 pidin -l

甚至更直接的,写一个程序挂入时钟中断,每经过多少个时钟中断后,触发一个外部事件,比方点亮一个LED什么的。

很多方法,这样,在你怀疑系统不响应时,你就有更多的信息来判断。