gdb从函数中打印静态变量

Sio*_*oux 4 c++ gdb

我们有一个C++程序,例如:

int&
Instance()
{
    static int test;
    return test;
}

int
main( int argc, char ** argv )
{
    int& test = Instance();
    printf("%d\n",test);

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

现在我正在尝试打印Instance :: test,正如一些gdb文档所建议的那样:ftp://ftp.gnu.org/old-gnu/Manuals/gdb/html_node/gdb_52.html

但是,这会产生:

(gdb)p Instance :: test

在指定的上下文中没有符号"test".

我正在使用-O0 -g进行编译.

小智 7

(gdb) p 'Instance()::test'
Run Code Online (Sandbox Code Playgroud)

适用于Ubuntu 14.04,gdb 7.7,g ++ 4.8.2.我怎么知道这是象征?

$ nm -C a.out | grep test
0000000000601040 d Instance()::test
Run Code Online (Sandbox Code Playgroud)

  • 正确.关键是单引号. (2认同)