Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/139.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ GDB的怪异行为_C++_Gdb - Fatal编程技术网

C++ GDB的怪异行为

C++ GDB的怪异行为,c++,gdb,C++,Gdb,我一直在试着调试一个小东西,在试着调试的时候差点发疯。经过几个小时的思考,我终于找到了一段代码,这是我问题的根源: #include <iostream> #include <vector> #include <stack> using namespace std; int main() { std::vector<int> foo = std::vector<int>(); foo.push_back(0);

我一直在试着调试一个小东西,在试着调试的时候差点发疯。经过几个小时的思考,我终于找到了一段代码,这是我问题的根源:

#include <iostream>
#include <vector>
#include <stack>

using namespace std;

int main()
{
    std::vector<int> foo = std::vector<int>();

    foo.push_back(0);
    foo.push_back(11);
    foo.push_back(222);
    foo.push_back(3333);

    std::stack<int> bar = std::stack<int>();

    cout << endl << foo.size() << endl << endl;

    return 0;
}
然后,我尝试以下方法:

(gdb) br 18
Breakpoint 1 at 0x40170c: file ./....cpp, line 18.
(gdb) r
Starting program: ...
[New Thread 15620.0x3c3c]

Breakpoint 1, main () at ./....cpp:18
18              cout << endl << foo.size() << endl << endl;
(gdb) p foo.size()
$1 = 4293588256
(gdb) c
Continuing.

4

[Inferior 1 (process 15620) exited normally]
(gdb)
(gdb)br 18
0x40170c处的断点1:file./…cpp,第18行。
(gdb)r
正在启动程序:。。。
[新螺纹15620.0x3c3c]
断点1,main()位于../..cpp:18

18 cout证明这确实是GDB7.6.1或G++4.8.1的问题。
将GDB更新为7.8.1版,将G++更新为4.9.2版解决了问题。

哪个操作系统?哪个编译器和版本?哪个版本的
gdb
?无法使用gcc4.9.2/gdb7.8.1(MinGW).Hm复制,因此这很可能是gdb的一个bug。我会将其更新到最新版本,然后重试。在创建之前,它怎么可能正确显示大小?或者你是说在创建另一个堆栈之前?你是什么意思,在它被创建之前?我想知道向量的大小。如果我在创建堆栈之前这样做,就可以了。如果我在得到那个奇怪的数字后再做。接受这个答案作为解决方案,如果这解决了问题。@gustaf,他还不能。别急!两个原始版本的新安装如何?这似乎是GDB从错误版本的libstdc++中读取符号。@LightnessRacesinOrbit最新版本的新安装基本上就是我最后所做的。我在让mingw更新到最新版本时遇到问题。对不起,如果我的措辞把你弄糊涂了。@user1982779:不,我说的是两个原始版本的新安装。
(gdb) br 18
Breakpoint 1 at 0x40170c: file ./....cpp, line 18.
(gdb) r
Starting program: ...
[New Thread 15620.0x3c3c]

Breakpoint 1, main () at ./....cpp:18
18              cout << endl << foo.size() << endl << endl;
(gdb) p foo.size()
$1 = 4293588256
(gdb) c
Continuing.

4

[Inferior 1 (process 15620) exited normally]
(gdb)