Як вирішити "Помилка сегментації (ядро скинуто)"


15

Я використовую Ubuntu 14.04.

Після встановлення деяких програм я зіткнувся з помилкою сегментації (ядро скинуто).

Що це означає ? Як я можу вирішити цю проблему?

Наприклад :

Після встановлення chrome-stable, коли я запускаю його з терміналу, я відчуваю цю помилку.


Деякі бінарні програми вийшли з ладу, але це дуже специфічно для програми, яка вийшла з ладу, тому вам може знадобитися сказати нам, яка програма виробляла це, також ви можете спробувати оновити його.
Квадпеппер


1
Оскільки це закрите джерело, вам краще піднести повідомлення про помилку дядьку GooGle!
user.dz

1
Добре SH :) Я попрошу дядька; P
Раван

1
Спробуйте видалити це перевагу & кеш sudo rm -rf ~/.config/google-chrome ~/.cache/google-chrome. Потім запустіть його в режимі анонімного переглядуgoogle-chrome --incognito
user.dz

Відповіді:


12

Що це означає?

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

Програма намагалася отримати доступ до області пам'яті поза власною секцією. ОС блокує його.

Деякі випадки: значення читання з ініціалізованим вказівником, вихід з діапазону в масив, функціональний виклик (коли зворотна сумісність не підтримується), ...

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

Як я можу вирішити цю проблему?

Якщо ви не зробили жодної спеціальної конфігурації / налаштування та встановлено всі оновлення. Увімкніть звіт про помилку , див. Як повідомити про помилку?

Якщо з відкритим кодом, що підтримується Ubuntu, використовуйте ubuntu-bug( apport-bug). Для стороннього закритого джерела перегляньте їх довідкові сторінки, як повідомляти про помилки та збирати пов’язані дані.


Примітка. Якщо у вас є навіть невеликий досвід програмування, рекомендується постаратися вирішити це самостійно. Там багато повідомлень про помилки там неактивні роками. Або принаймні зібрати достатню кількість даних про налагодження, щоб вирішити проблему перед тим, як повідомити про неї.

Деякі корисні інструменти для налагодження

  1. apport-bug журнали / основний дамп / зворотній шлях

    Якщо у вас немає повідомлення про помилку перед помилкою сегментації. Запустіть його з --saveопцією та шукайте журнал зворотного сліду:

    apport-bug program-cmd --save bug-report_output.txt
    
  2. gdb зворотний / налагоджувальний вихідний код

    Якщо це не спрацювало, використовуйте gdb:

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

    Якщо ви отримаєте будь-яке повідомлення про помилку, перевірте веб-сторінку, панель запуску та трекер помилок у поточному проекті, чи є подібні випадки.

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

  3. strace відстеження системних викликів

    Ще один інструмент, який може допомогти - це straceмені подобається. Це дійсно потужний інструмент.

    Він представляє себе:

    У найпростішому випадку straceвиконується вказана команда, поки вона не завершиться. Він перехоплює і записує системні виклики, які викликаються процесом, і сигнали, які отримує процес. Ім'я кожного системного виклику, його аргументи та його повернене значення друкуються на стандартній помилці або у файлі, визначеному параметром -o.

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

    Джерело: man strace

  4. ltrace динамічне відстеження викликів бібліотеки

    ltraceце програма, яка просто запускає вказану команду, поки вона не завершиться. Він перехоплює і записує динамічні виклики бібліотеки, які викликаються виконаним процесом, і сигнали, які приймаються цим процесом. Він також може перехоплювати та друкувати системні дзвінки, виконані програмою.

    Його використання дуже схоже на strace(1).

    Джерело: man ltrace

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.