2010-11-06 5 views
7

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

+0

Какое сообщение? TCP-сокеты? Unix-сокеты? DBUS? Общая память? – thejh

+0

Какой IPC? – st0le

+0

Спасибо, ребята. На самом деле я не знаю! Я хочу изменить одну карту интерфейса для другой. Я надеялся записать вызовы API на исходный драйвер и проанализировать выходные данные, чтобы понять все это, а затем перевести это на API другой карты. – Patrick

ответ

2

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

две вещи, чтобы попробовать первые являются ipcs и strace -e trace=ipc.

+0

хорошие инструменты. Мне не ясно, как вы будете использовать ipcs. – fabrizioM

1

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

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

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

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

1

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

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

  • Во-первых, просто глазное яблоко звонков и попытаться выяснить, средства связи ядро ​​
  • Тогда, добавить фильтры Strace звонить войти только связь ядро ​​вызывает
  • Наконец, убедитесь, что Трассирование регистрирует полные строки всех вызовов, так что вам не придется иметь дело с усеченными данными

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

Смежные вопросы