Я работаю над приложением на C++, работающим в Linux. Приложение имеет несколько наборов обработчиков сигналов, которые мешают друг другу. Моя задача - понять, как эти обработчики заданы и привести их в порядок. Я знаком с некоторыми из них и должен найти всех остальных. Я попытался найти исходный код для слов типа «сигнал» и «сигмент», но не смог найти обработчика, о котором я не знаю.Несколько обработчиков сигналов в приложении C++
Какие могут быть другие способы поиска этих обработчиков?
Есть ли способ увидеть/отслеживать установку этих обработчиков во время выполнения?
Они могут использоваться библиотеками. Вы можете «привязать» ваше приложение, чтобы понять, что он устанавливает сигналы. Прочитайте абсолютно [сигнал (7)] (http://man7.org/linux/man-pages/man7/signal.7.html) и [sigaction (2)] (http://man7.org/linux/man -pages/man2/sigaction.2.html) и расскажите подробнее о своем приложении: есть ли у вас весь исходный код и все исходные коды библиотек; это загрузка плагинов через [dlopen (3)] (http://man7.org/linux/man-pages/man3/dlopen.3.html)? –
У меня уже работает strace. Он показал несколько вызовов для rt_sigaction(). Однако он не показывает, куда пришел звонок. Приложения очень большие. Он состоит из нескольких модулей (общее количество файлов - несколько тысяч). Он работает с несколькими сторонними инструментами, такими как Oracle, ACE и т. Д. У нас есть исходный код некоторых из них, и у меня есть доступ ко всему набору наших файлов исходного кода. Каждый модуль является общей библиотекой. Некоторые из них связаны с исполняемым файлом, а другие загружаются через dlopen() – GMichael