Как диагностировать проблему с помощью дампа ядра?

RHEL4 (и CentOS4) все еще поставляет gtk +-1.2 пакета. Похоже, что их гном - освобождает пакет, использует его.

4
05.04.2012, 13:07
1 ответ

Во-первых, Вы прокручиваете тот вывод c++filt, какой demangles символы C++ в человекочитаемый, и исходный код способный перекрестной ссылкой вывод.

От этого Вы видите, что конструктор ПРОФИЛЯ звонил new[] который заставил исключение быть повышенным, для которого нет никакого обработчика (станд.:: оконечный назван), который заставляет программу прерываться, генерируя дамп ядра.

Можно перенести вызов к new[] в a try...catch блок для наблюдения, каково исключение. Я не могу помнить первое, что пришло на ум что исключения new[] может повысить и при каких обстоятельствах, но одна причина new отказы являются поврежденной "кучей", обычно или от перезаписи границ выделения или от двойного delete.

Можно диагностировать эти программы использования ошибок памяти как valgrind (свободный) или purify (коммерческий, принимая это все еще существует - я в последний раз использовал его 15 лет назад). valgrind было бы хорошее начало, и оно покажет Вам Ваши ошибки памяти упомянутой выше формы.

Можно пойти глубже с использованием дампа ядра gdb для осмотра отображения памяти программы в то время, когда это отказало но никто здесь не может действительно помочь с тем - необходимо знать, что структура кода и ожидаемого расположения памяти делает много с этим.

6
27.01.2020, 20:53
  • 1
    Привет camh, спасибо за быстрый ответ. Я apriciate Ваше предложение. Мы реализуем в нашей системе. –  Anil Naik 05.04.2012, 13:28

Теги

Похожие вопросы