2012-01-10 38 views
10

Tôi biết bạn có thể in một mảng trong gdb, ví dụ:Kích thước mảng C qua gdb

(gdb) p *[email protected] 

Có lệnh gdb nào có thể cho bạn biết độ dài của nó, ví dụ: một phím tắt tiện dụng để gõ một cái gì đó như:

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

Trong trường hợp mảng đã được quy định tại thời gian biên dịch và bạn muốn kiểm tra xem nó

Trả lời

12

Bạn có thể sử dụng ptype để biết loại biểu tượng.

Đối int array[5],

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

lệnh đẹp ... nhờ –

+0

thats chỉ là những gì tôi đang tìm kiếm .. – bph

+0

làm việc cho fortran quá – wander95

11

Nếu nó thực sự định nghĩa là một mảng, ví dụ

int array[5]; 

Sau đó có, bạn có thể sử dụng những gì bạn đã viết, mặc dù một cách tốt hơn và tổng quát hơn là:

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

này không giả định kiểu của mảng.

Nếu biến được xác định là con trỏ, thì không.

+0

điểm tốt, đó là chung chung hơn - tôi nghĩ có thể có một số phím tắt gdb cho điều đó? hoặc có thể bạn có thể định nghĩa bằng cách nào đó của bạn? – bph

+2

@Hiett Vâng, nếu bạn chỉ in mảng, nó sẽ in tất cả các giá trị. Ngoài ra, tôi không biết. – Kevin

Các vấn đề liên quan