Неизвестный конечный сигнал при использовании отладчика gdb

Я установил GDB в Mac OS X и проверил, что он работает. Я использовал эту следующую программу на C.

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[]) {

    int *my_array = (int *) malloc(5 * sizeof(int));
    int i;
    for (i = 0; i < 1000000; i++) {
        my_array[i] = i;
    }

    free(my_array);

    return 0;

}

У меня есть ошибка при компиляции, которая является нормальной (segmentation fault)

Однако, когда добавляет флаг -g в команду компиляции и запускает gdb в моей скомпилированной программе, у меня есть это сообщение после запуска команды выполнить

During startup program terminated with signal ?, Unknown signal.

На самом деле не знаю, откуда. Я добавил сертификат, чтобы гарантировать корректность работы gdb в OS X, но я не нашел ничего, чтобы исправить эту проблему.

Ответы

Ответ 1

Если вы в Сьерра, это ожидалось. GDB не совместим с macOS Sierra, даже с последней версией (7.12).

Возможно, нам стоит подождать еще один выпуск GDB или другое обновление для macOS, чтобы устранить ошибку.

Ответ 2

Из этого ответа: fooobar.com/questions/166448/...

Вот как я легко исправил проблему. [Обновление: на основе полученной обратной связи и еще не подтвержденного, похоже, что это решение работает с macOS Sierra 10.12, но не с macOS Sierra 10.12.2]

Смотрите видео инструкции здесь

Выйти из gdb

Использование текстового редактора, например. Sublime Text, сохраните файл с именем ".gdbinit" [Исключить кавычки] в вашей папке пользователя.

В файле добавьте следующее: "set startup-with-shell off" [Исключить кавычки]

Сохраните файл

gdb теперь должен работать

Источники

fooobar.com/questions/166448/...

https://discussions.apple.com/thread/7684629?start=0&tstart=0

Где находится .gdbinit и как его отредактировать?

https://sourceware.org/gdb/onlinedocs/gdb/Starting.html

Ответ 3

Для меня он отлично работал на MacOS Sierra версии 10.12.4, просто удалив и установив gdb как,

  • Удалить GDB

$brew удалить gdb

  1. Установить GDB

$brew установить gdb

Это установит последний gdb, совместимый с MacOS Sierra.

Надеюсь, что эта помощь кому угодно!

Ответ 4

Я установил gdb через Homebrew. В конце установки говорится:

В 10.12 (Сьерра) или позже с SIP вам нужно запустить это:

echo "set startup-with-shell off" >> ~/.gdbinit

Это было необходимо, чтобы заставить его работать. Также я должен был убедиться, что .gdbinit был установлен в конфигурации Eclipse Debug

Ответ 5

Сьерра (10.12), похоже, не поддерживает gdb. Я попробовал следовать учебнику, в котором мне был создан сертификат. Впоследствии, когда я побежал gdb, я получил ту же самую ошибку.

Apple использует lldb. Он работает хорошо и может интегрироваться с Eclipse, мне сказали. Вот ссылка .

Ответ 6

Могут быть много причин для этих Неизвестных сигналов 1) Я думаю, что в Linux существует ограничение на максимальный размер памяти. 2) Возможно, ваша система слишком загружена 3) Ваша программа плохо управляет памятью, и вы получаете разбитую память, поэтому malloc не может получить требуемый размер блока. 4) Ваша программа искажает внутренние структуры данных malloc, т.е. Использование плохих указателей