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

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

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

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

  • Как построить gcc внутри chroot Debian?
  • Не удалось найти заголовки в GCC
  • Узнайте варианты компиляции glibc
  • Установка gcc на CentOS 6.6: настройка проблемы
  • Где я могу найти готовые binutils и компиляторы для устаревших операционных систем?
  • Ошибка компиляции ядра с помощью руководства, представленного на веб-сайте Raspberry Pi
  • Ядро Linux, отсутствует символ «__fentry__»
  • Проблемы с установкой gcc-6 в debian jessie
  • One Solution collect form web for “Основные файлы, когда символы удаляются”

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

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

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

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

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

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

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

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

    Interesting Posts

    Извлечение столбца из текста, разделенного запятыми.

    Быстрая ссылка для быстрого поиска определенного символа

    open () для дескрипторов файлов по умолчанию

    Извлечь строки, которые имеют конкретное окончание, и использовать их для извлечения из другого файла

    В чем разница между прерываниями локального таймера и таймером?

    Может ли ядро ​​удалить исходящий пакет, который был захвачен tcpdump?

    Почему вновь созданные пользователи назначаются основным группам своих имен пользователей?

    Что означает «ссылка № 1»?

    Каков размер физического сектора для моего жесткого диска?

    Как создать несколько файлов tar с помощью сценария bash и использовать дату в качестве имен файлов?

    Почему vimdiff так медленно?

    Проблема монтажа mmcblk

    Почему tar не хватает места на диске, когда его осталось?

    Может ли VirtualBox работать под Xen Dom0?

    Как показать простой режим работы в строке состояния tmux?

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