Tuesday, May 3, 2011

Debugging di Eclipse: Memeriksa Element Pointer Array

Sebagai IDE, Eclipse bisa digunakan sebagai editor, builder/compiler, sekaligus debugger. Debugger di Eclipse berbasiskan GDB (GNU Debugger). Pada awalnya, GDB dibuat oleh Richard Stallman, penggagas open source software. Debugging menggunakan GDB saja tidak cukup, terutama karena set breakpoint pada GDB kurang intuitif, dan GDB tidak bisa menampilkan perjalanan step proses pada source code, ini juga berhubungan erat dengan intuisi debugging. Oleh karena itu, diperlukan front-end tools yang berbasis GDB untuk debugging, salah satunya Eclipse.

Sebagaimana layaknya tools GUI debugger, Eclipse menyediakan window khusus untuk menampilkan variable-variable dan nilainya. Bahkan jika nilai dalam variable berubah, Eclipse langsung memberikan tanda kuning pada variable tersebut, agar lebih eye catching. Tapi tetap saja debugging di Eclipse tidak se-"handy" Matlab, terutama karena ada tipe variabel yang nilainya tidak bisa langsung dilihat dengan mudah, yaitu pada kasus pointer. 


Jika pointer dimanfaatkan sebagai array, nilai masing-masing element dalam array tidak bisa terlihat dalam variable browser Eclipse. Berbeda jika array dibuat menggunakan static array. 

Untuk bisa memeriksa nilai element dalam pointer array, buka console GDB. Lalu ketikkan perintah GDB berikut.

print *([nama_pointer]+[index_awal])@[jumlah_element_yg_diperiksa]

Misalnya:


int *array;
array = malloc(5 * sizeof(int));
array[0] = 1;
array[1] = 2;
array[2] = 3;
array[3] = 4;
array[4] = 5;

Maka, untuk melihat nilai element array data, sejumlah 5 element, ketikkan perintah berikut di console GDB Eclipse:


print *(array)@5

Bisa juga disingkat menjadi:

p *(array)@5

Berikut contoh beberapa command untuk memeriksa nilai element array (real case).

1. Memeriksa nilai array mulai index pertama sampai sejumlah 5 element array.

p *code_deconcat1_row.data@5

2. Memeriksa nilai array mulai index kedua.

p *(code_deconcat1_row.data+2)

3. Memeriksa nilai array mulai index kedua sampai sejumlah 4 element array.

p *(code_deconcat1_row.data+2)@4

Selamat mencoba =)



No comments:

Post a Comment