首页 文章

C gdb打印数组在上下文中给出无符号“d”

提问于
浏览
1

我正在尝试调试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.

你能告诉我我能做什么,以便打印阵列的所有内容吗?

2 回答

  • 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)
    
  • 0

    确保关闭编译器优化 . This链接提供了更多细节 .

相关问题