Snoop межпроцессное взаимодействие - PullRequest
7 голосов
/ 06 ноября 2010

Кто-нибудь пробовал создать лог-файл межпроцессного взаимодействия? Может ли кто-нибудь дать мне небольшой совет о том, как лучше всего этого добиться?

Ответы [ 3 ]

2 голосов
/ 18 марта 2011

Вопрос не совсем понятен, а комментарии делают его менее понятным, но в любом случае ...

Сначала попробуйте две вещи: ipcs и strace -e trace = ipc .

1 голос
/ 20 марта 2011

Связь с драйвером ядра может принимать различные формы.Обычно для связи существует специальный файл устройства или может быть специальный тип сокета, например NETLINK.Если вам повезет, есть символьное устройство, для которого read () и write () являются единственным средством взаимодействия - если это так, то эти вызовы легко перехватить с помощью различных методов.Если вам не повезло, многие вещи выполняются с помощью ioctls или чего-то еще более сложного.

Однако, если запустить программу «strace» с помощью драйвера ядра для связи, можно обнаружить практически все, что он делает, хотя «ltrace»может быть более читабельным, если есть библиотеки, которые программа использует для связи.Настроив аргументы на «strace», вы, вероятно, можете получить дамп, содержащий только ту информацию, которая вам нужна:

  • Сначала просто посмотрите на вызовы и попытайтесь выяснить способы взаимодействия с ядром
  • Затем добавьте фильтры для вызова strace, чтобы регистрировать только вызовы связи ядра
  • Наконец, убедитесь, что strace регистрирует полные строки всех вызовов, чтобы вам не приходилось обрабатывать усеченные данные

Ответы, которые указывают на отладку IPC, вероятно, не имеют значения, поскольку связь с ядром почти никогда не имеет ничего общего с IPC (по крайней мере, с различными средствами IPC UNIX).

1 голос
/ 19 марта 2011

Если вы хотите регистрировать все IPC (кажется, очень интенсивно), вам следует подумать об инструментах.

Их много хороших инструментов для этого, проверьте PIN в перкулярном, этот раздел руководства;

В этом примере мы покажем, как сделать более селективные инструменты, изучив инструкции.Этот инструмент генерирует трассировку всех адресов памяти, на которые ссылается программа.Это также полезно для отладки и для моделирования кэша данных в процессоре.

Если вы выполняете некоторые тяжелые настройки и анализ, проверьте TAU (Утилиты настройки и анализа).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...