К сожалению, GDB - действительно лучший способ отладить проблемы машинного уровня в UnixSPARC, что довольно печально.
Основная вещь, которую нужно понять, это то, что segfault является своего рода исключением, а исключения приводят к тому, что программа врывается в отладчик, если он подключен.Они делают это, чтобы вы могли проверить состояние регистров процессора и памяти в момент сбоя.
Вы должны взглянуть на регистр счетчика команд (% ip).Он будет содержать адрес последней выполняемой инструкции, которая является командой, которая вызвала segfault.Это будет операция загрузки или сохранения, так что вы можете посмотреть, какой регистр содержит адрес памяти источника / назначения, и выяснить, почему этот адрес плохой (обычно это NULL или какой-то мусорный номер, который не является действительным адресом).
Другая вещь, которую вы можете сделать, - это скомпилировать ваш процесс, чтобы создать дамп ядра при сбое, который запишет снимок состояния программы в тот момент, когда она умерла как большой файл на диске.К сожалению, программа для чтения дампов ядра ... gdb.