Как разрешить «Ошибка сегментации (сбрасывание ядра)»

7

Я использую Ubuntu 14.04.

После установки некоторых приложений я столкнулся с ошибкой сегментации (сбрасыванием ядра).

Что это значит? Как я могу решить эту проблему?

Например :

После установки хром-стабильной, когда я запускаю ее с терминала, я испытываю эту ошибку.     

задан Ravan 27.10.2015 в 11:44
источник

1 ответ

6

Что это значит?

См. AU: что такое ошибка сегментации? , а также данные, которые имеют некоторые примеры, как воспроизвести его, ТАК: Что такое ошибка сегментации? . самое простое описание, с которым я могу прийти (может быть, не идеально):

  

Программа попыталась получить доступ к области памяти вне своей секции. OS блокирует его.

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

Однако не всегда легко найти причину с большими программами или теми, которые ретранслируют другие библиотеки проекта. И большинство случаев заканчивается сообщением об ошибке, либо для целевой программы, либо для одной из ее зависимостей (либо от восходящего проекта, либо от дистрибутивного пакета вниз).

Как я могу решить эту проблему?

Если вы не создали какую-либо пользовательскую конфигурацию / настройку и все обновления были установлены. Оставьте отчет об ошибке , см. Как сообщить об ошибке?

Если открытый источник поддерживается Ubuntu, используйте ubuntu-bug ( apport-bug ). Для стороннего закрытого источника проверьте свои страницы справки, как сообщать об ошибках и собирать связанные данные.

Примечание. Если у вас есть хотя бы небольшой фон программирования, рекомендуется приложить все усилия, чтобы решить проблему самостоятельно. Там много отчетов об ошибках в течение многих лет неактивны. Или, по крайней мере, собрать достаточное количество отладочных данных, чтобы решить проблему, прежде чем сообщать об этом.

Некоторые полезные инструменты для отладки

  1. apport-bug logs / core dump / backtrace

    Если у вас нет сообщения об ошибке перед ошибкой сегментации. Запустите его с опцией --save и найдите журнал следа:

    apport-bug program-cmd --save bug-report_output.txt
    
  2. gdb backtrace / исходный код отладки

    Если это не сработало, используйте gdb :

    $ gdb program-cmd
    (gdb) run
    (gdb) backtrace
    

    Если вы получаете сообщение об ошибке, проверьте веб-сайт, пусковую панель и контрольный отладчик ошибок в потоковом режиме, если есть какие-либо подобные случаи.

    Для некоторых продвинутых пользователей или тех, кто следит за учебным путем c / c ++, они могут загрузить соответствующие пакеты символов -dbg . Затем вы можете использовать gdb для трассировки потока программы через источник и получить точную функцию / инструкцию, которые повышают ошибку времени выполнения.

  3. strace трассировка системных вызовов

    Другим инструментом, который может помочь, является strace , мне это нравится. Это действительно мощный инструмент.

    Он представляет себя:

      

    В простейшем случае strace запускает указанную команду до тех пор, пока она не выйдет. Он перехватывает и записывает системные вызовы, вызываемые              процесс и сигналы, которые принимаются процессом. Имя каждого системного вызова, его аргументы и его возвращаемое значение печатаются на              стандартная ошибка или файл, указанный с помощью опции -o.

         

    strace - полезный инструмент диагностики, обучения и отладки. Системные администраторы, диагносты и стрелки найдут это              бесценный для решения проблем с программами, для которых источник недоступен, поскольку их не нужно перекомпилировать в              чтобы проследить их. Студенты, хакеры и чрезмерно любопытные найдут, что многое можно узнать о системе и ее системе              звонки, отслеживая даже обычные программы. И программисты найдут, что, поскольку системные вызовы и сигналы - это события, которые происходят на              интерфейс пользователя / ядра, тщательное изучение этой границы очень полезно для изоляции ошибок, проверки работоспособности и попытки захвата              условия гонки.

    Источник: man strace

  4. ltrace динамическая трассировка вызовов библиотеки

      

    ltrace - это программа, которая просто запускает указанную команду до тех пор, пока   Это          выходы. Он перехватывает и записывает вызовы динамической библиотеки, которые          вызываемые выполненным процессом, и сигналы, которые          этот процесс. Он также может перехватывать и печатать системные вызовы exe-          вырезанные программой.

         

    Его использование очень похоже на strace (1).

    Источник: man ltrace

ответ дан user.dz 30.11.2015 в 00:09
источник