崩溃时,mac / eclipse上的c ++不会显示错误

时间:2016-04-13 13:12:55

标签: c++ eclipse macos debugging

您好我正在使用c ++ / eclipse的全新安装。我使用的是Cross GCC,我的所有选项都是

-O0 -g3 -Wall -c -fmessage-length=0 -std=c++11 -v

当应用程序崩溃时,因为我在c ++上刷新自己,它只是很好地退出,没有堆栈跟踪,没有嘿,你有一个seg错误消息。没有。没有得到错误输出说崩溃的位置是不可用的。

我错过了什么简单的步骤或标志?

我写出界限的例子。

cout << "this will crash! " << endl;
int foo[1000];
for (int i = 0; i <= 3000 ; i++)
    foo[i] = i;
cout << "!Hello World!!!" << endl; // prints !!!Hello World!!!

输出

this will crash! 

没有别的。

谢谢! 哦,我正在为调试器运行GDB。调试器可以用于断点等。

1 个答案:

答案 0 :(得分:1)

你确定它正在用-O0进行编译吗?

当我使用-O2编译此代码时,编译器检测到初始化数组没有外部副作用或依赖性,并完全忽略它。

.LC0:
        .string "this will crash! "
main:
        subq    $8, %rsp
        movl    $17, %edx
        movl    $.LC0, %esi
        movl    std::cout, %edi
        call    std::basic_ostream<char, std::char_traits<char> >& std::__ostream_insert<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*, long)
        movl    std::cout, %edi
        call    std::basic_ostream<char, std::char_traits<char> >& std::endl<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&)
        xorl    %eax, %eax
        addq    $8, %rsp
        ret
        subq    $8, %rsp
        movl    std::__ioinit, %edi
        call    std::ios_base::Init::Init()
        movl    $__dso_handle, %edx
        movl    std::__ioinit, %esi
        movl    std::ios_base::Init::~Init(), %edi
        addq    $8, %rsp
        jmp     __cxa_atexit