Saya ingin mencetak panjang penuh C-string di GDB. Secara default disingkat, bagaimana cara memaksa GDB untuk mencetak seluruh string?
376
set print elements 0
set print elements
number-of-elements
Tetapkan batas pada berapa banyak elemen dari array yang akan dicetak oleh GDB. Jika GDB mencetak array besar, itu berhenti mencetak setelah telah mencetak jumlah elemen yang ditetapkan oleh set print elements
perintah. Batas ini juga berlaku untuk tampilan string. Ketika GDB dimulai, batas ini diatur ke 200. Mengatur jumlah elemen ke nol berarti bahwa pencetakan tidak terbatas .
Selama program Anda dalam keadaan waras, Anda juga
call (void)puts(your_string)
dapat mencetaknya ke stdout. Prinsip yang sama berlaku untuk semua fungsi yang tersedia untuk debugger, sebenarnya.sumber
Ada opsi ketiga: perintah x, yang memungkinkan Anda untuk menetapkan batas berbeda untuk perintah tertentu alih-alih mengubah pengaturan global. Untuk mencetak 300 karakter pertama dari sebuah string yang dapat Anda gunakan
x/300s your_string
. Outputnya mungkin sedikit lebih sulit untuk dibaca. Misalnya mencetak hasil query SQL di:sumber
x
!The
printf
perintah akan mencetak string lengkap:sumber
set print elements nnn
batas, dan tidak akan mencetak string yang lengkap kecuali Anda melakukannyaset print elements 0
.Hanya untuk melengkapinya:
Anda harus memberi panjang, tetapi dapat mengubah representasi string itu:
Ini mungkin berguna jika Anda ingin men-debug berdasarkan nilainya
sumber
Menggunakan
set elements ...
tidak selalu merupakan cara terbaik. Akan bermanfaat jika ada yang berbedaset string-elements ...
.Jadi, saya menggunakan fungsi-fungsi ini di .gdbinit saya:
Peringatan:
sumber