Chcę śledzić funkcję podczas procesu uruchamiania jądra z ftrace function_graph
, aby zrozumieć, co robi, ale nie jest dostępna w available_filter_functions
.Jak udostępnić funkcję jądra Linuxa do ftrace function_graph tracer?
Próbowałem wyeksportować go za pomocą EXPORT_SYMBOL()
, zgadując, że go udostępni, ale tak nie jest.
Masz rozwiązanie?
Aby uzyskać informacje, funkcje, które chcę śledzić, to persistent_ram_init_ringbuffer
i persistent_ram_early_init
w jądrze systemu Android 3.4.
Czytam poprzez dokumentację ale nic nie znalazłem na ten temat i grep nie pomogło więcej ...
Dzięki
Z mojego rozumienia Ftrace dynamiczne śledzenie funkcji polega na wywołaniu funkcji mcount na początku każdej funkcji jądra. Jeśli funkcja, którą Cię interesuje, nie ma możliwości, że dostępny filtr może się nie pojawić. Czy uważasz, że nie używasz dynamicznego śledzenia? Może przynieść lepsze wyniki. –
Wydaje się, że EXPORT_SYMBOL ma więcej wspólnego z ładowaniem modułu jądra rozwiązującego problemy licencyjne GPL/non-GPL, a nie Ftrace. – bazza
Kiedy wyświetlasz available_filter_functions, czy coś się w ogóle wyświetla? Z tego, co mogę powiedzieć, kiedy kompilujesz jądro za pomocą CONFIG_FUNCTION_TRACER (i wszystkich innych gqbtr frac) włączonych funkcję śledzenia wejścia/wyjścia jądra zaimplementowano poprzez ustawienie opcji w wierszu poleceń gcc. Te opcje powodują, że gcc emituje określone wywołanie funkcji dla każdej kompilowanej przez siebie funkcji. Jeśli dobrze to rozumiem, oznacza to, że każda funkcja jądra Linuksa powinna być automatycznie przechwytywana przez ftrace. To skłoniło mnie do zastanowienia się, czy cokolwiek w ogóle było możliwe do prześledzenia w twoim jądrze. – bazza