2010-11-06 24 views
7

Czy ktoś próbował utworzyć plik dziennika komunikacji międzyprocesowej? Czy ktoś mógłby mi doradzić, jak najlepiej to osiągnąć?Komunikacja międzyprocesorowa Snoop

+0

Jaki rodzaj komunikacji? Gniazda TCP? Gniazda Unix? DBUS? Pamięć współdzielona? – thejh

+0

Jaki rodzaj IPC? – st0le

+0

Dzięki chłopaki. Właściwie to nie wiem! Chcę zmienić jedną kartę interfejsu na inną. Miałem nadzieję, że loguję wywołania API do oryginalnego sterownika i analizuję dane wyjściowe, aby zrozumieć jego tajniki, a następnie przetłumaczyć je na API innej karty. – Patrick

Odpowiedz

2

Pytanie nie jest całkiem jasne, a komentarze sprawiają, że mniej oczywiste, ale w każdym razie ...

Dwie rzeczy, aby spróbować najpierw są ipcs i strace -e trace=ipc.

+0

ładne narzędzia. Nie jest dla mnie jasne, jak byś użył ipcs. – fabrizioM

1

Jeśli chcesz zarejestrować wszystkie IPC (wydaje się bardzo intensywny), powinieneś rozważyć oprzyrządowanie.

Ich jest wiele dobrych narzędzi do tego, sprawdź PIN w perticular, this section instrukcji;

W tym przykładzie pokażemy, jak to zrobić bardziej selektywne oprzyrządowania przez zbadaniu zgodnie z instrukcjami. To narzędzie generuje ślad wszystkich adresów pamięci, do których odwołuje się program. Jest to również przydatne do debugowania i do symulacji pamięci podręcznej danych w procesorze .

Jeśli wykonujesz jakieś ciężkie ustawienia i analizy wagi, sprawdź TAU (Dostrajanie i analiza wykorzystania).

1

Komunikacja z sterownikiem jądra może przybierać różne formy. Zwykle jest specjalny plik urządzenia do komunikacji lub może istnieć specjalny typ gniazda, taki jak NETLINK. Jeśli masz szczęście, istnieje urządzenie znakowe, do którego tylko metody read() i write() są jedynymi środkami interakcji - jeśli tak jest, wtedy te połączenia są łatwe do przechwycenia przy użyciu różnych metod. Jeśli masz pecha, wiele rzeczy dzieje się z ioctlami lub czymś jeszcze trudniejszym.

Jednak uruchomienie "strace" w programie przy użyciu sterownika jądra do komunikacji może ujawnić prawie wszystko, co robi - choć "ltrace" może być bardziej czytelny, jeśli zdarzają się biblioteki używane przez program do komunikacji. Przez strojenie argumentów „strace”, prawdopodobnie można uzyskać zrzut, który zawiera tylko informacje potrzebne:

  • Po pierwsze, tylko gałki ocznej połączenia i spróbować dowiedzieć się środkami komunikacji jądra
  • Następnie dodać filtry do strace zadzwonić do logowania wywołuje jedynie komunikat kernel
  • Wreszcie, upewnij strace rejestruje pełne ciągi wszystkich połączeń, więc nie mają do czynienia z danymi ściętych

odpowiedzi wskazujące Debugowanie IPC prawdopodobnie nie ma znaczenia, ponieważ komunikuje się z nim jądro prawie nigdy nie ma nic wspólnego z IPC (przynajmniej nie różne urządzenia UNIX IPC).