我有这个简单的c ++代码:
#include<bits/stdc++.h>
using namespace std;
vector<string> q;
int main()
{
q.push_back("test1");
q.push_back("test2");
cout<<q.front();
return 0;
}
当我使用gdb
打印变量q
时,我收到以下错误:
No symbol "q" in current context.
我使用g ++编译我的程序:
g++ -g a.cpp
这是我的gdb命令:
gdb a.out
GNU gdb (GDB) 7.12
Copyright (C) 2016 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-pc-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from a.out...done.
(gdb) b 6
Breakpoint 1 at 0x400c6f: file a.cpp, line 6.
(gdb) r
Starting program: /home/mohammad/Desktop/a.out
Breakpoint 1, main () at a.cpp:9
9 q.push_back("test");
(gdb) print q
No symbol "q" in current context.
答案 0 :(得分:5)
此问题与新gcc Dual ABI introduced in gcc 5有某种关联。 gdb对这些新的C ++ 11 ABI标记的支持很差。请参阅以下错误:
作为一种解决方法,您可以通过使用-D_GLIBCXX_USE_CXX11_ABI=0
进行编译来禁用此新gcc ABI:
g++ -D_GLIBCXX_USE_CXX11_ABI=0 -g a.cpp