【发布时间】:2016-11-26 16:35:13
【问题描述】:
我有这个简单的 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.
【问题讨论】:
-
可能您在同一目录中缺少符号文件?
-
题外话:谨慎使用
#include<bits/stdc++.h>和using namespace std;,并极其谨慎地使用它们。在此处阅读更多信息 Why is “using namespace std” considered bad practice? 和 Why should I not #include <bits/stdc++.h>? -
可能是因为
q是全球性的。查找print的详细信息。一分钟后回来 -
还是不知道为什么看不到,但是如果缩小
q的作用域static vector<string> q;就可以看到了。 -
@user4581301 你有没有想过为什么全局变量没有显示在 gdb 中?
标签: c++ gdb global-variables