Где находится файл coredump в среде CTest?

Я получаю ошибку сегментации, когда запускаю модульное тестирование в CTest Framework. Поэтому мне нужен файл дампа ядра для ошибки сегмента. Но не в состоянии найти его.

0

Решение

В недавнем Ubuntu (12.04 в моем случае) возможно распечатать «Ошибка сегментации (сброшено ядро)», но файл ядра не был создан там, где вы могли бы его ожидать (например, для локально скомпилированной программы).

Это может произойти, если у вас размер основного файла ulimit 0 (you haven't done ulimit -c unlimited) — это значение по умолчанию в Ubuntu. Обычно это подавляет «(ядро сброшено)», что указывает на вашу ошибку, но в Ubuntu файлы ядра отправляются в Apport (система отчетов о сбоях Ubuntu) через /proc/sys/kernel/core_patternи это, кажется, вызывает ложное сообщение.

Если Apport обнаруживает, что рассматриваемая программа не является одной, она должна сообщать о сбоях (что вы можете увидеть в /var/log/apport.log), он прибегает к моделированию поведения ядра по умолчанию при помещении файла ядра в cwd (это делается в сценарии / usr / share / apport / apport). Это включает в себя соблюдение ulimit, и в этом случае он ничего не делает. Но (я предполагаю), что касается ядра, был сгенерирован файл core (и передан для аппроксимации), отсюда и сообщение «Ошибка сегментации (ядро сброшено)».

В конечном счете, PEBKAC забыл установить ulimit, но вводящее в заблуждение сообщение заставило меня подумать, что я на некоторое время схожу с ума, задаваясь вопросом, что съедает мои основные файлы.

(Также, в общем, основная (5) страница справочника — man 5 core — хороший справочник о том, где заканчивается ваш основной файл, и о причинах, по которым он может быть не записан.)

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector