我正在尝试调试C ++程序,但在尝试打印数组内容时遇到以下问题 我在c ++程序中声明了一系列字符
using namespace std;
int main() {
string s;
cin >> s;
char d[s.size()];
int i=0;
int j=0;
while(j<s.size()) {
if(s[j] != '+') {
d[i++] = s[j];
}
j++;
}
}
我使用以下命令编译上面的代码并运行gdb
g++ -g main.cpp -o main
gdb main
然而,当我在GDB中调试并点击下面的命令时,我得到以下错误。
Command entered in GDB : p *d@10
No symbol "d" in current context.
请告诉我能做什么,以便打印阵列的所有内容?
答案 0 :(得分:1)
在运行程序之前,没有要打印的变量。对于您的程序,您应该在main
的最后一行设置断点,然后运行该程序。当程序在断点处停止时,您可以打印d
。
(gdb) list 15
10 while(j<s.size()) {
11 if(s[j] != '+') {
12 d[i++] = s[j];
13 }
14 j++;
15 }
16 }
(gdb) break 15
Breakpoint 1 at 0x80488b9: file x.cc, line 15.
(gdb) run
Starting program: /home/jxh/StackOverflow/gdb/a.out
1234567890
Breakpoint 1, main () at x.cc:15
15 }
(gdb) p *d@10
$2 = "1234567890"
(gdb)
答案 1 :(得分:0)
确保关闭编译器优化。 This链接提供了更多细节。