Как исправить постоянное исключение EXC_BAD_ACCESS в XCode с помощью SystemC? - PullRequest
0 голосов
/ 16 июня 2019

Я хочу написать код SystemC, используя Xcode IDE. Я настроил все это, и код, который я использую для тестирования моих сборочных установок, прекрасно работает, но он всегда работает в потоке 1: исключение EXC_BAD_ACCESS, независимо от того, что я делаю.

Я пытался закомментировать все, пока не был включен только заголовок systemc и sc_main. Когда я попробовал нормальный код C ++ в другом проекте, чтобы посмотреть, была ли это общая проблема XCode, он работал нормально и не встретил исключений.

Я использую этот универсальный код Hello World для проверки моей установки:

#include <systemc>
 //Hello_world is module name
SC_MODULE (hello_world) {
    SC_CTOR (hello_world) {
      // Nothing in constructor
    }

    void say_hello() {
        //Print "Hello World" to the console.
        std::cout << "Hello World.\n";
   }
};

// sc_main in top level function like in C++ main
int sc_main(int argc, char* argv[]) {
    hello_world hello("HELLO");
     //Print the hello world
    hello.say_hello();
    return(0);
}

После выполнения кода в течение нескольких секунд он всегда завершается с: Thread 1: EXC_BAD_ACCESS (code = 2, address = 0x7ffeef3ffff8).

EDIT: Мой Конфиг:
- SystemC: v2.3.3
- Xcode: v10.2.1 (10E1001)
- Компилятор: (я запустил gcc --version)
- LLV: v10.0.1 (clang-1001.0.46.4)
- c ++: v4.2.1
Я использую std = gnu ++ 98 (компилятор по умолчанию) в качестве языка диалекта c ++, все остальное сталкивалось с ошибками сборки.

Ответы [ 3 ]

0 голосов
/ 17 июня 2019

Если вы используете SystemC 2.3.2, вы можете столкнуться со следующей проблемой (в macOS 10.13 или более поздней версии): http://forums.accellera.org/topic/6079-make-check-return-fail/. Предполагается, что эта проблема исправлена ​​в SystemC 2.3.3.

Этого можно избежать, скомпилировав SystemC 2.3.2 с ../configure --disable-async-updates ... или перейдя на SystemC 2.3.3 и , включив C ++ 11 (может быть по умолчанию в последней версии Xcode, выможете проверить значение макроса SC_CPLUSPLUS в вашей модели).

0 голосов
/ 18 июня 2019

Я сделал это!Я создал SystemC с помощью Cmake, следуя инструкциям, приведенным в этом ответе: Настройка проекта SystemC с CMake: неопределенная ссылка на sc_core.
В CMakeLists.txt я явно установил CMAKE_CXX_STANDARD на 11 и собрал проект через командную строку и cmake.
Спасибо за помощь:)

0 голосов
/ 16 июня 2019

EXC_BAD_ACCESS происходит, когда система не может вернуться из блока выполнения, такого как бесконечный цикл или рекурсия.

Вы должны взглянуть на трассировку стека в Навигаторе отладчика и посмотреть, какая функция вызывается и никогда не возвращает ИЛИ какие функции вызываются снова и снова.

Не забудьте запустить проект в режиме DEBUG . ( НЕ выпускать )

...