Anda dapat menggunakan inti dengan GDB dalam banyak cara, tetapi meneruskan parameter yang akan diteruskan ke file yang dapat dieksekusi ke GDB bukanlah cara untuk menggunakan file inti. Ini juga bisa menjadi alasan Anda mendapatkan kesalahan itu. Anda dapat menggunakan file inti dengan cara berikut:
gdb <executable> <core-file>
atau gdb <executable> -c <core-file>
atau
gdb <executable>
...
(gdb) core <core-file>
Saat menggunakan file inti Anda tidak harus memberikan argumen. Skenario macet ditampilkan di GDB (diperiksa dengan GDB versi 7.1 di Ubuntu).
Misalnya:
$ ./crash -p param1 -o param2
Segmentation fault (core dumped)
$ gdb ./crash core
GNU gdb (GDB) 7.1-ubuntu
...
Core was generated by `./crash -p param1 -o param2'. <<<<< See this line shows crash scenario
Program terminated with signal 11, Segmentation fault.
#0 __strlen_ia32 () at ../sysdeps/i386/i686/multiarch/../../i586/strlen.S:99
99 ../sysdeps/i386/i686/multiarch/../../i586/strlen.S: No such file or directory.
in ../sysdeps/i386/i686/multiarch/../../i586/strlen.S
(gdb)
Jika Anda ingin meneruskan parameter ke executable untuk di-debug di GDB, gunakan --args
.
Misalnya:
$ gdb --args ./crash -p param1 -o param2
GNU gdb (GDB) 7.1-ubuntu
...
(gdb) r
Starting program: /home/@@@@/crash -p param1 -o param2
Program received signal SIGSEGV, Segmentation fault.
__strlen_ia32 () at ../sysdeps/i386/i686/multiarch/../../i586/strlen.S:99
99 ../sysdeps/i386/i686/multiarch/../../i586/strlen.S: No such file or directory.
in ../sysdeps/i386/i686/multiarch/../../i586/strlen.S
(gdb)
Halaman manual akan sangat membantu untuk melihat opsi GDB lainnya.
Penggunaan sederhana GDB, untuk men-debug file coredump:
gdb <executable_path> <coredump_file_path>
File coredump untuk "proses" dibuat sebagai file "core.pid".
Setelah Anda masuk ke dalam prompt GDB (saat menjalankan perintah di atas), ketik:
...
(gdb) where
Ini akan memberi Anda informasi, tentang tumpukan, tempat Anda dapat menganalisis penyebab crash/kesalahan.Perintah lainnya, untuk tujuan yang sama adalah:
...
(gdb) bt full
Ini sama seperti di atas. Dengan konvensi, ini mencantumkan seluruh informasi tumpukan (yang pada akhirnya mengarah ke lokasi kerusakan).
Lewati saja parameternya. GDB tidak membutuhkannya:
gdb ./exe core.pid