信号处理程序的安装程序

另请参见

收集器的分析数据收集机制使用了两个信号,SIGPROFSIGEMT。为了确保不丢失或误处理分析信号,收集器将自己的信号处理程序安装为主信号处理程序。如果即将在其上收集数据的程序安装了自己的信号处理程序,收集器会将其信号处理程序重新安装为主信号处理程序。收集器的信号处理程序会将自己不处理的信号都传递给程序的信号处理程序。

来自于收集器的信号处理程序会设置一个标志,该标志用于确保不会因信号传送而中断系统调用。如果程序的信号处理程序将此标志设置成允许中断系统调用,这可能会改变程序的行为。行为改变的一个重要例证发生在异步 I/O 库 libaio.so 上,该库使用 SIGPROF 执行异步取消操作,并且确实会中断系统调用。如果安装了收集器库 libcollector.so,则取消信号将延迟到达。

有一种情况,收集器不会重新安装其信号处理程序。如果您没预先加载收集器库就将 dbx 连接到某个进程并启用了性能数据收集,则即使程序随后安装了自己的信号处理程序,收集器也不会重新安装它自己的信号处理程序。在这种情况下,为了不丢失性能数据,程序的信号处理程序必须确保传递 SIGPROFSIGEMT 信号。如果程序的信号处理程序会中断系统调用,则程序行为和分析行为都将与预先安装收集器库时的情况有所不同。

另请参见
在正运行的进程上收集性能数据

找到要找的内容了吗?如未找到,请将您的意见通过电子邮件发送至 docfeedback@sun.com。
法律声明