Основные файлы, когда символы удаляются

Я создаю приложение с помощью g ++ 4.3. Я использую максимально возможный уровень оптимизации, не используя параметр -g , и я удаляю символы после сборки.

Если я НЕ снимаю символы из своего приложения и библиотек, являются ли основные файлы полезными? (Когда они генерируются при сбое приложения.)

Будут ли файлы ядра полезными, если я скомпилирую мое приложение с максимально возможной оптимизацией? (Без опции -g и без снятия символов.)

  • Где GCC ищет свои внутренние исполняемые файлы?
  • Используя * Autotools *, как мне сохранить список компиляторов в файле по файлу?
  • Ошибка перекрестного компиляции ядра linux с помощью buildroot
  • Компиляция g ++ из исходного кода приводит к повреждению стандартной библиотеки. error: ':: realloc' не был объявлен
  • Установка GCC 4.6.3 на Fedora 18
  • Только выводить ошибки / предупреждения при компиляции ядра?
  • Как правильно скомпилировать gcc toolchain с помощью специального sysroot?
  • Автоматическое обновление GCC до более поздней версии без обновления дистрибутива
  • One Solution collect form web for “Основные файлы, когда символы удаляются”

    В общем случае основной файл представляет собой дамп всей памяти, используемой процессом, а также состояние регистров процессора. Таким образом, в общем, информация, которую вы можете получить из основного файла, такая же, как вы могли бы получить, подключив отладчик к процессу непосредственно перед его сбоем.

    Если я не снимаю символы из своего приложения и библиотек, все еще полезны основные файлы?

    Материал из Википедии:

    “ В современных Unix-подобных операционных системах администраторы и программисты могут читать файлы дампа ядра с помощью библиотеки двоичных файлов GNU Binutils (BFD), […] Эта библиотека будет поставлять необработанные данные для заданного адреса в области памяти от дампа сердечника; он ничего не знает о переменных или структурах данных в этой области памяти, поэтому приложение, использующее библиотеку для чтения дампа ядра, должно будет определять адреса переменных и определять компоновку самих структур данных, например, используя таблицу символов для программы, выполняющей отладку. ''

    Поэтому ответ на ваш первый вопрос: no, core dump files мало полезны, если вы отделяете символы от исполняемого файла.

    Однако символы просто занимают некоторое дисковое пространство и не влияют на производительность в целом: вы можете скомпилировать с максимальной оптимизацией и -g одновременно.

    Будут ли файлы ядра полезными, если я скомпилирую мое приложение с максимально возможной оптимизацией?

    Поскольку основной файл представляет собой только дамп памяти и состояния процессора при сбое приложения, применяется общее предупреждение об оптимизации и отладке: отладчик будет находить информацию (например, значение переменной или вызов функции в stack backtrace), если он не был оптимизирован.

    Interesting Posts

    Многопоточный cp на linux?

    Сценарии поиска с циклом for для разных переменных

    Безопасен ли «add-apt-repository» против вредоносной сети («MITM»)?

    ToyVpnService выдает исключение PortUnreachableException и истекает после первоначального подключения

    Вилка бомба на Mac?

    Создание сочетаний элементов из вектора для ввода в качестве входных данных в программе

    ssh на сервер, подключенный к службе VPN

    Распределение Linux с удаленным рабочим столом?

    Linux-сервер с чаем-деамоном, подключенным к активному каталогу, защищающему клиентов от использования драйверов или PPD

    Есть ли Linux-эквивалент супер-администратора Windows?

    Где «экспорт var = значение» недоступен?

    цикл через файл на 2 строки в оболочке

    Могу ли я изменить размер корневого раздела без удаления и переустановки Linux (или потери данных)?

    Использование аутентификации openldap только для некоторых пользователей

    Как я могу использовать подключенный накопитель sftp?

    Linux и Unix - лучшая ОС в мире.