Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
4.9k views
in Technique[技术] by (71.8m points)

fanotify文件实时监控无法使用gdb调试

fanotify FAN_MARK_MOUNT 模式,监控根路径,gdb fanotify监控程序时,ctrl+c ctrl+z 引起系统卡死,有人遇到过么? 是否有解决办法?


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

偶然看见这个问题,刚好我也遇到过。其实问题的原因与FAN_MARK_MOUNT没有任何关系,这只表示你监控了某个mount目录全部文件而已。
真正的原因有两个:
1、你一定是使用了FAN_CLASS_CONTENT而不是FAN_CLASS_NOTIF,使用FAN_CLASS_CONTENT模式你得确保OPEN_PERM和ACCESS_PERM事件有回复,否则应用程序必然会阻塞在open或read函数。
2、gdb如何处理ctrl+c和ctrl+z?在gdb调试时信号会先被gdb接收然后才发送给进程,有的信号还会被拦截不让进程收到,ctrl+c就是其一。不论是ctrl+c和ctrl+z都会使gdb停止进程的运行。
好了,真正的原因已经浮出水面,你在gdb调试时让进程停止运行了,那么发生PERM事件时自然无法处理事件了,那么系统卡死必然会出现,除非进程恢复运行或退出。


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...