gdb:查看未使用的 struct typedef

bar*_*gol 3 c++ gdb

我无法查看我定义的结构的所有 typedef。特别是,如果未使用 typedef,则 gdb 在打印类型时不会显示它。这是一个例子:

struct D
{
  typedef double dtype;
  typedef int itype;
};

int main(int /*argc*/, char** /*argv*/)
{
  D::dtype t;

  t = 2;
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

当我运行 gdb 时,我输入ptype D,但我只得到以下内容

(gdb) ptype D
type = struct D {
    typedef double dtype;
}
(gdb) 
Run Code Online (Sandbox Code Playgroud)

有没有办法打印所有类型定义,即使它们没有被使用?杂项信息:

  1. 我有set print type typedefs on
  2. 我用调试符号编译:g++ -g -o test main.cpp
  3. gdb版本是7.10
  4. 海湾合作委员会版本是5.3

Tom*_*mey 5

GCC 默认情况下会忽略调试信息中未使用的类型。如果您确实需要此类型出现在调试信息中,请使用-fno-eliminate-unused-debug-types. 然而,正如手册警告的那样,这将使生成的调试信息膨胀。