Сбоит ли моя программа даже до достижения main ()? - PullRequest
0 голосов
/ 24 февраля 2009

Я пытаюсь перенести проект с SDL и WxWidgets на MacOS X с XCode 3.1.2. Проект довольно большой, но я, наконец, получил его для успешной компиляции. Тем не менее, он выходит сразу после запуска с сообщением «MyApplication вышла со статусом 99».

В целях отладки я изменил свою основную функцию так:

int main(int argc, char *argv[])
{
    cout <<"hello world";
    cout <<"and goodbye";
    throw "test";
}

Я также добавил точки останова ко всем трем основным строкам функций. Тем не менее, отладчик по-прежнему не работает, и приложение по-прежнему завершается сразу после запуска.

Вывод консоли отладки выглядит следующим образом:

(gdb) run [Переключение на процесс 94140 локальный поток 0x3607] Запуск…

Отладчик остановлен. Не могу найти test.xml !

Отладчик остановлен. Программа вышла с значение состояния: 99. (ГБД)

Я не знаю, к какому файлу "not find test.xml" относится, почему XCode ищет его в первую очередь или он вообще связан с моей проблемой.

Это мой первый проект XCode, поэтому я не знаю, что делать дальше. Любые советы будут с благодарностью.

Ответы [ 4 ]

5 голосов
/ 24 февраля 2009

SDL использует некоторые хаки для вашей основной функции. Вполне вероятно, что ваш основной код никогда не будет достигнут.

Попробуйте сломать «start» и перейти оттуда - AFAIK «start» является точкой входа в любой исполняемый файл macho.

То, что вы видите, выглядит как бинарный выход с кодом ошибки "99". Возможно, вы захотите найти код ошибки 99 в SDL или WX.

Позднее редактирование: с сайта SDL: файл заголовка "SDL_main.h" переназначает вашу функцию main () в функцию SDL_main () с помощью макроса функции.

1 голос
/ 24 февраля 2009

Возможно, у вас нет правильных настроек проекта. Какой шаблон проекта вы выбрали?

0 голосов
/ 25 февраля 2009

И я ожидаю, что test.xml - это файл данных для этого модульного теста, и он может ожидать его в каталоге по умолчанию. Project> Edit Active Executable и убедитесь, что рабочий каталог при запуске находится там, где код ожидает его (корневой каталог, каталог проекта или исполняемый каталог).

Я должен сказать, однако, что я не рекомендую изучать новый инструмент путем переноса исходного кода, с которым вы не знакомы. Вам будет трудно сказать, какие проблемы возникают из-за того, что Xcode узнает о том, какие проблемы возникают из-за странных ожиданий SDL / WxWidgets.

0 голосов
/ 24 февраля 2009

В итоге я обнаружил, что в файле модульного теста была функция main (), отличная от сторонней библиотеки, которую я по ошибке включил.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...