在哪里可以看到 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 指向一个字符串文字。此字符串存储在只读内存中,尝试修改此内存会导致未定义的行为。它通常是段错误或总线错误。
我在 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 指向一个字符串文字。此字符串存储在只读内存中,尝试修改此内存会导致未定义的行为。它通常是段错误或总线错误。