Bagaimana saya bisa membuat gdb menyimpan histori perintah?
195
Bagaimana saya bisa mengatur gdbsehingga menyimpan sejarah perintah? Saat memulai gdbsesi baru , saya ingin menggunakan tombol panah ke atas untuk mengakses perintah dari sesi sebelumnya.
Catatan: .gdbinitFile tersebut harus dilindungi oleh orang lain selain Anda di linux.
urzeit
@urzeit - Saya pikir itu penyebab hilang pada distro seperti Ubuntu. Mereka mengizinkan siapa saja masuk ke direktori home orang lain secara default.
jww
@jww .gdbinitFile tidak diproses jika izin tidak diatur dengan benar, tidak peduli apa standarnya atau apa batasan lain pada direktori home yang digunakan oleh sistem.
urzeit
@urzeit Jika Anda membuat .gdbinitfile dan bukan itu masalahnya, itu berarti Anda umasktidak disetel ke nilai waras seperti 022. Kemudian dalam sistem multi-pengguna, Anda memiliki masalah lebih besar dari sekadar .gdbinitfile Anda .
Kaz
Jawaban:
283
Jawaban singkat: echo 'set history save on' >> ~/.gdbinit && chmod 600 ~/.gdbinit
Jawaban panjang:
Riwayat perintah dicakup dalam manual GDB, 22,3 Riwayat Perintah . Buat file $HOME/.gdbinit, ubah izinnya 0600, dan tambahkan konten berikut:
set history save on
Anda dapat mengatur jumlah perintah sebelumnya yang disimpan dengan yang berikut ini. Perintah ini digambarkan sebagai "Tetapkan jumlah perintah yang disimpan gdb dalam daftar riwayatnya. Ini default ke nilai variabel lingkungan GDBHISTSIZE, atau 256 jika variabel ini tidak disetel. Nilai-nilai non-numerik dari GDBHISTSIZE diabaikan. Jika ukuran tidak terbatas atau jika GDBHISTSIZE adalah angka negatif atau string kosong, maka jumlah perintah yang disimpan dalam daftar sejarah tidak terbatas " .
set history size <size>
Perintah terkait adalah set history remove-duplicates <count> . Perintah ini digambarkan sebagai "Kontrol penghapusan entri riwayat duplikat dalam daftar riwayat perintah. Jika jumlah tidak nol, gdb akan melihat kembali pada entri riwayat jumlah terakhir dan menghapus entri pertama yang merupakan duplikat dari entri saat ini menjadi ditambahkan ke daftar riwayat perintah. Jika jumlah tidak terbatas maka tampilan ini tidak terikat. Jika jumlah adalah 0, maka penghapusan entri riwayat duplikat dinonaktifkan " .
set history remove-duplicates <count>
Secara default, gdb menyimpan histori ke dalam file ./.gdb_history di direktori saat ini . Jika Anda ingin riwayat perintah Anda tidak bergantung pada direktori tempat Anda berada, sertakan juga:
Hanya menemukan ini untuk diri saya sendiri dan berpikir saya akan membagikannya di SO.
Frank
3
Untuk waktu berikutnya, sah-sah saja membuat pertanyaan yang dijawab sendiri seperti non-komunitas-wiki. :)
Greg Hewgill
@ Terus Bagaimana jika saya mengetik nmaka saya panah ke atas, saya mendapatkan semua perintah sebelumnya yang dimulai dengan n.
SIFE
Pada GDB 8.0.1 ini tampaknya berfungsi tanpa izin file khusus.
Ryan1729
7
Jika Anda masih mengalami masalah, pastikan variabel lingkungan HISTSIZE Anda adalah angka yang cukup tinggi. Milik saya kosong, menyebabkan pengaturan "ukuran sejarah" gdb ke default menjadi 0.
Ditambahkan
export HISTSIZE=100000000
ke ~ / .bashrc saya dan semuanya membengkak
Anda dapat memeriksa pengaturan riwayat gdb dengan melakukan (di dalam gdb) "tampilkan riwayat":
gdb$ show history
expansion: History expansion on command input is off.
filename: The filename in which to record the command history is "/home/xiao/.gdb_history".
save: Saving of the history record on exit is on.
size: The size of the command history is 100000000.
set ukuran sejarah ukuran ukuran sejarah set terbatas
Set jumlah perintah yang GDB terus dalam daftar sejarah. Ini default ke nilai variabel lingkungan HISTSIZE, atau 256 jika variabel ini tidak disetel. Jika ukuran tidak terbatas, jumlah perintah yang disimpan GDB dalam daftar riwayat tidak terbatas.
Saya memiliki masalah yang sama. Meskipun memasukkan set history size 100file .gdbinit, variabel lingkungan HISTSIZE masih menyebabkan ukuran histori diatur ke nol. Masalahnya adalah bahwa gdb tidak mengerti bahwa HISTSIZE dapat disetel menjadi tidak terbatas
DavidW
Bug HISTSIZE di gdb telah diperbaiki pada Juni 2015 , bukan berarti perubahan ini mungkin ada pada sistem Anda. Sementara itu, jika HISTSIZEdisetel harus> 0, atau gdb akan menonaktifkan histori.
.gdbinit
File tersebut harus dilindungi oleh orang lain selain Anda di linux..gdbinit
File tidak diproses jika izin tidak diatur dengan benar, tidak peduli apa standarnya atau apa batasan lain pada direktori home yang digunakan oleh sistem..gdbinit
file dan bukan itu masalahnya, itu berarti Andaumask
tidak disetel ke nilai waras seperti022
. Kemudian dalam sistem multi-pengguna, Anda memiliki masalah lebih besar dari sekadar.gdbinit
file Anda .Jawaban:
Jawaban singkat:
echo 'set history save on' >> ~/.gdbinit && chmod 600 ~/.gdbinit
Jawaban panjang:
Riwayat perintah dicakup dalam manual GDB, 22,3 Riwayat Perintah . Buat file
$HOME/.gdbinit
, ubah izinnya0600
, dan tambahkan konten berikut:Anda dapat mengatur jumlah perintah sebelumnya yang disimpan dengan yang berikut ini. Perintah ini digambarkan sebagai "Tetapkan jumlah perintah yang disimpan gdb dalam daftar riwayatnya. Ini default ke nilai variabel lingkungan GDBHISTSIZE, atau 256 jika variabel ini tidak disetel. Nilai-nilai non-numerik dari GDBHISTSIZE diabaikan. Jika ukuran tidak terbatas atau jika GDBHISTSIZE adalah angka negatif atau string kosong, maka jumlah perintah yang disimpan dalam daftar sejarah tidak terbatas " .
Perintah terkait adalah
set history remove-duplicates <count>
. Perintah ini digambarkan sebagai "Kontrol penghapusan entri riwayat duplikat dalam daftar riwayat perintah. Jika jumlah tidak nol, gdb akan melihat kembali pada entri riwayat jumlah terakhir dan menghapus entri pertama yang merupakan duplikat dari entri saat ini menjadi ditambahkan ke daftar riwayat perintah. Jika jumlah tidak terbatas maka tampilan ini tidak terikat. Jika jumlah adalah 0, maka penghapusan entri riwayat duplikat dinonaktifkan " .Secara default, gdb menyimpan histori ke dalam file ./.gdb_history di direktori saat ini . Jika Anda ingin riwayat perintah Anda tidak bergantung pada direktori tempat Anda berada, sertakan juga:
sumber
n
maka saya panah ke atas, saya mendapatkan semua perintah sebelumnya yang dimulai dengann
.Jika Anda masih mengalami masalah, pastikan variabel lingkungan HISTSIZE Anda adalah angka yang cukup tinggi. Milik saya kosong, menyebabkan pengaturan "ukuran sejarah" gdb ke default menjadi 0.
Ditambahkan
ke ~ / .bashrc saya dan semuanya membengkak
Anda dapat memeriksa pengaturan riwayat gdb dengan melakukan (di dalam gdb) "tampilkan riwayat":
Dari dokumen :
sumber
set history size 100
file .gdbinit, variabel lingkungan HISTSIZE masih menyebabkan ukuran histori diatur ke nol. Masalahnya adalah bahwa gdb tidak mengerti bahwa HISTSIZE dapat disetel menjadi tidak terbatasHISTSIZE
disetel harus> 0, atau gdb akan menonaktifkan histori.