2016-02-10 67 views
2

我無法查看我定義的結構的所有typedefs。特別是,如果沒有使用typedef,當打印類型時,gdb不會顯示它。這裏有一個例子:gdb:查看未使用的結構typedef

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

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

    t = 2; 
    return 0; 
} 

當我運行GDB,我然後鍵入ptype D,但我只得到以下

(gdb) ptype D 
type = struct D { 
    typedef double dtype; 
} 
(gdb) 

有沒有辦法打印所有的typedef,即使不使用他們? 其他信息:

  1. 我已經set print type typedefs on
  2. 我編譯與調試符號:g++ -g -o test main.cpp
  3. gdb的版本是7.10
  4. gcc版本是5.3
+0

爲什麼除了[С++]之外,這個標記爲[С]?這似乎是一個C++特定的問題。 – AnT

+0

那麼,typedef關鍵字也存在於C中,不是嗎? – bartgol

+1

是的,但不能將typedefs嵌入到C中的結構中。這個問題在C中不存在。 – AnT

回答

2

GCC默認省略未使用的類型從調試信息。如果您確實需要此類型出現在調試信息中,請使用-fno-eliminate-unused-debug-types。但是,正如手冊所警告的那樣,這會膨脹產生的調試信息。

+0

是的!謝謝,這工作!你說得對,這應該是一個極端的解決方案。在實際代碼中(不是我發佈的例子),第二個typedef應該被使用,但是我不能從gdb訪問它,這讓我認爲它沒有被使用。不過,我想檢查一下是否正確。 謝謝! – bartgol