2009-04-27 3 views
0

У меня есть старый код C, который я недавно компилировал в Linux. На исходном HPUX приложение открывает и закрывает несколько окон проклятий. В ящике Linux он может обрабатывать одно окно, но если я закрою это окно, он сбой программы с сообщением об ошибке «Aborted». Есть идеи?Окно Curses в Linux Causing Abort

ответ

0

Обнаружено, что это была команда touchwin, которая приводила к ее сбою. Удаление этой строки кода, по-видимому, не имеет негативных последствий. :-) Спасибо всем за помощь. Наверху голосов.

3

Да. Измените свои параметры с помощью ulimit (1), поэтому, когда он прерывается, вы сохраняете дамп ядра. Затем посмотрите на дамп ядра с gdb (1), чтобы узнать, где он прерывается и вернуться к нам.

+0

Добро пожаловать ... Название программы Версия 1.0 Программный сигнал SIGSEGV, ошибка сегментации. [Переключение на тему 4131518144 (LWP 15705)] 0x0804dc0c в wclose() (GDB), где # 0 0x0804dc0c в wclose() # 1 0x0804d5a7 в WelcomeSplash() # 2 0x0804cf96 в основной() – Jeff

+0

Как я интерпретировать 0x0804dc0c для перевода на определенную строку кода? (wclose - вызов функции в настраиваемом коде) – Jeff

+0

Перекомпилируйте программу с включенной отладкой, поэтому таблица символов все еще существует (посмотрите на флаги для gcc), и она даст вам фактическое имя функции, которое умирает. но у Джонатана это есть. –

2

Учитывая комментарии к реакции Чарли Мартина, кажется, что вы не открываете свое окно и закрываете не открытое окно с резкими результатами. Посмотрите, чтобы проверить коды возврата функций (и) инициализации Curses и открытого вызова окна.