2009-10-30 25 views
11

Hãy xem xét ví dụ sau:Làm cách nào để "xem" mảng động C++ bằng gdb?

int size = 10, *kk = new int[size]; 

for (int i = 0; i < size; i++) { 
    kk[i] = i; 
} 

delete [] kk; 

Làm cách nào để thêm đồng hồ cho toàn bộ mảng? Tôi có thể thêm từng chiếc đồng hồ (kk [0], kk [1] ...), nhưng vì tôi biết chiều dài của mảng có cách nào để tự động làm điều đó không? Ý tôi là một cái gì đó như kk [0..size-1] hoặc hơn thế.

Tôi đang sử dụng NetBeans IDE cùng với Cygwin g ++ và gdb.

+1

Việc chỉnh sửa của Nga đã thay đổi ý nghĩa của câu hỏi một chút, nhưng @ trong biểu thức hoạt động cho cả lệnh hiển thị và lệnh in. – mkb

+0

Bạn có muốn xem nó (ngắt đọc/ghi) hay in nó bất cứ khi nào GDB dừng lại? –

+0

Để xem (ngắt) trên toàn bộ mảng: http://stackoverflow.com/questions/11004374/watch-a-memory-range-in-gdb –

Trả lời

11

Hãy thử display *[email protected]<size> Từ doc cho lệnh in:

@ là một nhà điều hành nhị phân để điều trị dữ liệu liên tiếp các đối tượng bất cứ nơi nào trong bộ nhớ như một mảng. FOO @ NUM cho một mảng có phần tử đầu tiên là FOO, phần tử thứ hai được lưu trữ trong không gian sau nơi FOO được lưu trữ, vv FOO phải là biểu thức có giá trị nằm trong bộ nhớ.

+0

Rất tốt! Đây là những gì tôi muốn :). http://bit.ly/4yYT4V – Keiji

+0

Tôi thích sử dụng p thay vì "hiển thị", vì dễ nhập hơn. Tôi đã thêm nó như là một câu trả lời riêng biệt ở đây. – PlagueHammer

+1

"in" và "hiển thị" không phải là cùng một lệnh. "display" đặt một đồng hồ trên một biến để bạn nhìn thấy nó mỗi lần bạn nhận được lời nhắc, giả định biến nằm trong phạm vi. – mkb

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