在哪里可以看到 Clion 的异常消息

Where to see Clion's Exception Messages

我在 CLion 中 运行 以下代码:

int main()
{
    char amessage [] = "oafaojfpa";
    char * pmessage = "oafaojfpa";
    char * apmessage = amessage;

    amessage[2]='X';
    *(pmessage+2)='X';

    printf(amessage);
    printf("\n");
    printf(pmessage);
    printf("\n");
    printf(apmessage);

    return(0);
}

代码 *(pmessage+2)='X'; 应该引发异常。然而,输出是:

/Users/spacegoing/Library/Caches/CLion12/cmake/generated/1ab7f406/1ab7f406/Debug/TCPL_Learn

Process finished with exit code 10

CLion 只说退出代码 10。但是我在哪里可以查看异常消息?

只有 C++ 代码会抛出异常。在这种情况下,您遇到了低级错误。您会看到 C/OS return 值 10,这是总线错误。

如今 x86 上的总线错误很少见,当您的处理器甚至无法尝试请求的内存访问时就会发生,通常是:

  • 使用地址不满足其对齐要求的处理器指令。
  • 修改只读内存

您的指针 pmessage 指向一个字符串文字。此字符串存储在只读内存中,尝试修改此内存会导致未定义的行为。它通常是段错误或总线错误。