2012-01-10 65 views
10

我知道你可以在gdb中打印一個數組,例如通過gdb的C數組大小

(gdb) p *[email protected] 

是否有一個gdb命令可以告訴你它的長度,例如:一個方便的快捷鍵輸入類似:

(gdb) p sizeof(array)/sizeof(int) 

的情況下數組在編譯時被定義的,您要檢查它

回答

12

您可以使用ptype來了解符號的類型。

int array[5]

(gdb) ptype array 
type = int [5] 
+0

漂亮的命令...謝謝 – 2013-08-23 11:49:25

+0

那就是我正在尋找.. – bph 2015-03-09 14:50:14

+0

也爲fortran工作 – wander95 2017-09-26 20:35:33

11

如果它實際上是定義爲一個陣列,例如

int array[5]; 

然後是的,你可以使用你寫的東西,雖然有更好,更普遍的方式是:

(gdb) p sizeof(array)/sizeof(*array) 

這不承擔陣列的類型。

如果變量被定義爲一個指針,那麼沒有。

+0

好點,那就是更通用的 - 我想可能有一些針對GDB捷徑?或者可能你可以定義你自己的? – bph 2012-01-10 18:33:26

+2

@Hiett那麼,如果你只是打印數組,它會打印所有的值。除此之外,我不知道。 – Kevin 2012-01-10 18:35:16