#include <iostream>
int main ()
{
int* a = new int[15];
a[0] = 42;
a[1] = 43;
std::cerr << a[0];
return 0;
}
gdb说a = 0xffffffff并且'print a [0]'给出'无法访问内存地址',但为什么呢?如果在gdb之外运行,程序将按预期打印出'42'。这里发生了什么?用'g ++ test2.cpp -gstabs + -O0 -o test2'编译。
答案 0 :(得分:1)
你在哪个平台上? gstabs +调试器格式不是普遍支持的,如果你想使用它,你必须熟悉COFF,DWARF 2和我从未听说过的其他一些exe / debug格式之间的迷人差异。底线 - 阅读gdb手册。但是如果你只使用-g标志,你的代码几乎肯定会正常工作。
答案 1 :(得分:0)
是的,我可以重现,但只能使用-gstabs+
那么:你为什么要使用-gstabs+
?
这听起来不公平,但这是一个诚实的问题,刺入什么优势+带来'正常'调试信息?