Arhn - архитектура программирования

gdb крашит мою машину. Как отлаживать?

Мы пишем довольно большую систему, построенную на наборе программ на C++. (которые активно используют общие библиотеки)

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

Я не знаю, с чего начать. В /var/log/messages ничего нет. dmesg показывает, что машина снова загружается.

Подключенный монитор быстро высветит (я думаю) сообщение о панике ядра, а затем исчезнет. Не могу даже прочитать, что это такое. Centos 6 32-битный дистрибутив с:

# uname -a
Linux 3.16.6 #1 SMP Fri Oct 31 18:56:38 SGT 2014 i686 i686 i386 GNU/Linux
# gdb --version
GNU gdb (GDB) Red Hat Enterprise Linux (7.2-60.el6_4.1)

Кажется, нет никаких файлов журнала, которые я могу найти.

Что делать? Отладка огромной системы с операторами печати занимает вечность. Пересобирать ядро? Любые процедуры или рекомендации приветствуются.

01.05.2015

  • Убедитесь, что у вас нет аппаратных проблем. И вам, вероятно, может понадобиться больше оперативной памяти. Вы не можете скомпилировать и запустить на 64-битной машине x86-64? Кстати, вы можете попытаться скомпилировать более новую версию GDB (из исходного кода) и, возможно, более новую версию GCC и binutils: текущая версия GDB — 7.9, текущая версия GCC — 5.1 (апрель 2015 г.) 01.05.2015
  • Спасибо за ответ. Переход на 64-битную версию невозможен — огромная база кода с 32-битными сторонними библиотеками. Аппаратное обеспечение не показывает никаких других проблем, кроме сбоя, когда GDB достигает точки останова. Я посмотрю на компиляцию нового GDB. Тонны свободной памяти: ]# cat /proc/meminfo MemTotal: 8066316 КБ MemFree: 5789964 КБ MemAvailable: 7815828 КБ 02.05.2015
  • Поскольку CentOS 6 поставляется с ядром 2.6.32, вы используете свое собственное ядро, верно? Когда возникла проблема с gdb? 02.05.2015
  • Да, один из ребят собрал ядро ​​для нашего HW (zotac MB с i7). GDB и точки останова работают — в небольших программах. Но попадание в точку останова в большом приложении приводит к сбою машины. С учетом внешних библиотек, таких как ACE/TAO, Agent++ и т. д., размер большого приложения составляет прибл. 800 тысяч строк C++ 02.05.2015

Ответы:


1

Если вы получаете панику ядра, очевидно, вам нужно захватить вывод до перезагрузки машины. Вот несколько способов сделать это:

  1. подключите последовательную линию к серверу и получите эхо-сигнал консоли по последовательному порту. Для этого вам нужно передать, скажем, console=ttyS0 в командной строке ядра при загрузке. Или, альтернативно,

  2. используйте netconsole для отправки пакетов по сети и отслеживания их с другого компьютера.

Есть и другие варианты, которые также могут помочь — подробнее см. здесь: https://wiki.ubuntu.com/Kernel/KernelDebuggingTricks

Тем не менее, вам все равно нужно будет исправить все, что не так, конечно. Звучит так, как будто вы используете собственное ядро ​​— можете ли вы взять другую версию ядра (где, надеюсь, ошибка исправлена)?

Грег

02.05.2015
Новые материалы

Коллекции публикаций по глубокому обучению
Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

Представляем: Pepita
Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

Советы по коду Laravel #2
1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

3 способа решить квадратное уравнение (3-й мой любимый) -
1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

Создание VR-миров с A-Frame
Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

Демистификация рекурсии
КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..