Aby faktycznie debuggować funkcje biblioteczne (zrobić coś więcej niż zabawy z assemblerem czy podgląd zmiennych) należy sobie ściągnąć odpowiedni kod (zwykle więc będzie to newlib, czasem gcc - zależy o jakiej funkcji mowa) i gdy w Eclipse wyskoczy to okienko, że "nie znaleziono źródeł", to jest tam opcja z pytaniem o inną ścieżkę w której można je znaleźć. Po wskazaniu folderu w którym faktycznie znajduje się dany plik wszystko będzie śmigać jak trzeba.
Instrukcja "krok po kroku" - poniżej.
1. "Dochodzimy" do jakiejś funkcji którą chcielibyśmy zdebuggować, w moim przypadku niech będzie to malloc(). Albo więc należy do tej funkcji "do-step-ować", albo postawić na niej breakpointa.
2. Klikam w "Step Into" (lub F5) - Eclipse wyświetli coś takiego:
Quote: Can't find a source file at "/home/freddie/bleeding-edge-toolchain/src/newlib/newlib/libc/stdlib/malloc.c"
Locate the file or edit the source lookup path to include its location.
3. Poniżej tego komunikatu wybieramy "Edit Source Lookup Path..."
4. W nowym okienku klikamy "Add..." i następnie wybieramy opcję "Path Mapping", zatwierdzamy klikając "OK".
5. W nowym okienku nowemu mapowaniu nadajemy jakąś nazwę (np. "newlib"). Następnie klikamy w "Add" i do kolumny "Compilation path" wpisujemy to co chcemy zastąpić - tutaj będzie to "/home/freddie/bleeding-edge-toolchain/src/newlib" - a w kolumnie "Local system file path" przy użyciu przycisku "..." wyklikujemy ścieżkę której chcemy użyć - u mnie np. jest to "d:\newlib".
4. Zatwierdzamy wszystko klikając kilka razy w "OK".
5. Cieszymy się, że wszystko działa (;
Opcje takie - niestety - są osobne dla każdej konfiguracji debuggera, tzn. że jeśli skonfigurowane są dwie (np. jedna z ładowaniem firmware'u, druga bez - ja zwykle tak właśnie mam skonfigurowane), to będzie trzeba te kroki powtórzyć też dla innych konfiguracji. Wszystkie ustawienia są tak naprawdę dostępne w opcjach konfiguracji debuggowania, zakładka Source.
Inną opcją jest skonfigurowanie globalnego mapowania - Window > Preferences > C/C++ > Debug > Source Lookup Path i robimy dokładnie to samo co wyżej.
Ważne jest, aby ten kod który "zmapujemy" był faktycznie tym kodem który jest w toolchainie. Warto więc zajrzeć do pliku "info.txt" i zobaczyć jaka dokładnie wersja (commit hash lub rewizja) została użyta i dokładnie tą sobie pobrać na dysk.
Dodano po 1 [minuty]:
tadzik85 wrote: Właśnie sprawdziłem nowego BETa wersje win x64. wywala się już przy 1 pliku kompilowanym.
"Wywala" to się co najwyżej make. Przy zmianie toolchaina należy zrobić "make clean"... Co więcej - 32-bitowy Eclipse wymaga zapewne 32-bitowego toolchaina. Do 64-bitowego potrzebny jest więc zapewne 64-bitowy Eclipse i 64-bitowa Java. Osobiście - ze względu na takie właśnie problemy - używam wersji 32-bitowej. Różnica szybkości pomiędzy 32- a 64-bity jest praktycznie zerowa (margines błędu).
4\/3!!