Dlaczego nie należy używać opcji -fomit-frame-pointer
Nie należy w /etc/make.conf (ani żadnym innym make’u, chyba że tego akurat potrzebujemy), dopisywać opcji “-fomit-frame-pointer”. Taka refleksja po wczorajszych zmaganiach z Gentoo. Dlaczego?
Ta opcja zmniejsza kod wynikowy ponieważ wycina z niego kod odpowiedzialny za obsługę wskaźnika ramki (to takie coś z assemblera ;)). Także wygląda, że to całkiem przydatna opcja ponieważ zmniejsza kod wynikowy.
Z drugiej jednak strony kłóci się z niektórymi opcjami debugowania, ponieważ wycinając ten kod czyni czasem debugowanie niemożliwym. Przypadkiem w którym tak się dzieje jest np. ustawienie w Gentoo flagi USE=”profile”. Służy ona do profilowania kodu, a jej bezpośrednim efektem jest dodanie do parametrów gcc opcji “-pg”. Także jeśli mamy w /etc/make.conf “-fomit-frame-pointer”, a we flagach programu ustawimy “profile” to kod nam się nie skompiluje.
Co w takim razie zrobić? Można zmieniać konfigurację jeśli chcemy akurat kompilować kod który planujemy debugować. Jest jednak prostsze rozwiązanie – nic nie robić. Ta opcja i tak jest włączona (jeśli tylko nie kłóci się z innymi opcjami) we wszystkich profilach optymalizacji w gcc. Także jeśli tylko mamy włączoną optymalizację (a chyba każdy z nas ma dopisane -O?) to gcc będzie starało się używać tą opcję zawsze jeśli tylko będzie to możliwe.
Recent Comments