gcc-G vs not-G i strip vs not strip, wydajność i zużycie pamięci?

Jeśli Rozmiar pliku binarnego nie jest problemem, czy są jakieś wady używania opcji-g, a nie strip binaries, które mają być uruchamiane w środowisku o krytycznym działaniu? Mam dużo miejsca na dysku, ale plik binarny jest obciążony procesorem i zużywa dużo pamięci. Binarny jest ładowany raz i jest żywy przez kilka godzin.

EDIT:

Powodem, dla którego chcę używać binariów z informacjami debugującymi, jest generowanie użytecznych zrzutów pamięci w przypadku błędów segmentacji.

Author: Johan, 2011-05-09

1 answers

Elf Loader ładuje segmenty, a nie sekcje; mapowanie z sekcji do segmentów jest określane przez skrypt linkera używany do budowania pliku wykonywalnego.

Domyślny skrypt linkera nie mapuje sekcji debugowania do żadnego segmentu, więc jest to pominięte.

Informacje o symbolach występują w dwóch odmianach: symbole statyczne są przetwarzane poza pasmem i nigdy nie są przechowywane jako dane sekcji; dynamiczne tabele symboli są generowane przez łącznik i dodawane do specjalnego segmentu, który jest ładowany wraz z plikiem wykonywalnym, ponieważ musi być dostępny dla linkera dynamicznego. Polecenie strip usuwa tylko statyczne symbole, które i tak nigdy nie są przywoływane w segmencie.

Możesz więc używać pełnych informacji debugowania przez cały proces, a to nie wpłynie na rozmiar pliku wykonywalnego w pamięci RAM, ponieważ nie jest on ładowany. Oznacza to również, że informacje nie są zawarte w zrzutach podstawowych, więc nie daje to żadnych korzyści w tym zakresie.

The objcopy utility posiada specjalną opcję kopiowania tylko informacji o debugowaniu, dzięki czemu można wygenerować drugi plik ELF zawierający te informacje i używać usuniętych plików binarnych; podczas analizy zrzutu pamięci można następnie załadować oba pliki do debuggera:

objcopy --only-keep-debug myprogram myprogram.debug
strip myprogram
 30
Author: Simon Richter,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-05-09 12:04:04