我有一个守护进程来进行配置管理.所有其他进程都应该与此守护进程交互以实现其功能.但是当我执行一个大动作时,几个小时后守护进程就会在2到3个小时内没有响应.并且在2-3小时后它正常工作.
Linux进程的调试实用程序挂起问题?
如何获得linux进程挂起的位置?
解决方法
> strace可以显示最后的系统调用及其结果
> lsof可以显示打开的文件
>写入日志消息以跟踪进度时,系统日志非常有效.允许在较小的区域中解决问题.还将日志消息与来自其他系统的其他消息相关联,这通常会产生有趣的结果
> wireshark如果应用程序使用套接字使线缆可见.
> ps ax top可以显示你的应用程序是否处于繁忙的循环中,即在IO中一直运行,休眠或阻塞,消耗CPU,使用内存.
> lsof可以显示打开的文件
>写入日志消息以跟踪进度时,系统日志非常有效.允许在较小的区域中解决问题.还将日志消息与来自其他系统的其他消息相关联,这通常会产生有趣的结果
> wireshark如果应用程序使用套接字使线缆可见.
> ps ax top可以显示你的应用程序是否处于繁忙的循环中,即在IO中一直运行,休眠或阻塞,消耗CPU,使用内存.
这些中的每一个都可以提供一些信息,这些信息共同构成了问题的图景.
使用gdb时,在应用程序被阻止时触发核心转储可能很有用.然后你有一个静态快照,你可以在闲暇时使用事后调试进行分析.您可以通过脚本触发这些操作.您可以快速构建一组快照,用于测试您的理论.