如何使用 SystemC 修复 Xcode 中的永久性 EXC_BAD_ACCESS 异常?

How to fix permanent EXC_BAD_ACCESS exception in Xcode using SystemC?

我想使用 Xcode IDE 编写 SystemC 代码。我已经全部设置好,我用来测试我的安装的代码构建得很好,但它总是运行到线程 1:EXC_BAD_ACCESS 异常,无论我做什么。

我试图注释掉所有内容,直到只剩下 systemc header 和 sc_main。当我在另一个项目中尝试正常的 c++ 代码时,看看它是否是一个一般的 Xcode 问题,它工作正常并且 运行 也不例外。

我使用这个通用的 Hello World-code 来测试我的安装:

#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);
}

在代码 运行 几秒钟后,它总是崩溃:线程 1:EXC_BAD_ACCESS(代码=2,地址=0x7ffeef3ffff8)。

编辑: 我的配置:
- 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++ 语言方言,其他所有内容 运行 都会出现构建错误。

EXC_BAD_ACCESS 当系统无法从执行块中 return 时发生,例如无限循环或递归。

您应该查看 调试器导航器 中的堆栈跟踪,看看正在调用哪个函数,而不是 returns OR 哪些函数被一遍又一遍地调用。

不要忘记在 DEBUG 模式下 运行 项目。 (未发布

如果您使用的是 SystemC 2.3.2,您可能 运行 遇到以下问题(在 macOS 10.13 或更高版本上):http://forums.accellera.org/topic/6079-make-check-return-fail/。此问题假定已在 SystemC 2.3.3 中修复。

您可以通过使用 ../configure --disable-async-updates ... 编译 SystemC 2.3.2 或移动到 SystemC 2.3.3 并 启用 C++11(可能是默认设置)来避免它在最近的 Xcode 版本中,您可以检查模型中 SC_CPLUSPLUS 宏的值。

我做到了!我按照此答案中提供的步骤使用 Cmake 构建了 SystemC: .
CMakeLists.txt 中,我将 CMAKE_CXX_STANDARD 显式设置为 11 并通过命令行和 cmake 构建项目。
感谢您的帮助:)