Saya ingin gdb
segera menjalankan executable, seolah-olah saya mengetik "run" (motivasi: Saya tidak suka mengetik "run").
Salah satu caranya adalah menyalurkan perintah menjadi gdb
seperti ini:
$ echo run | gdb myApp
Tetapi masalah dengan pendekatan ini adalah Anda kehilangan interaktivitas dengan gdb
, misalnya. jika breakpoint memicu atau myApp
crash, gdb
berhenti. Metode ini dibahas di sini .
Melihat opsi di --help
, saya tidak melihat cara untuk melakukan ini, tapi mungkin saya melewatkan sesuatu.
./a.out a b
gdb -x
pada sistem Linux. OS X menggunakan LLVM dan clang jadi periksalah kapabilitas debugginglldb
.Saya akan menggunakan gdb-script:
di mana skrip Anda berisi sesuatu seperti:
setelah itu Anda memiliki prompt gdb interaktif normal
EDIT :
berikut adalah optimasi untuk yang benar-benar malas:
.gdbinit
padaworking directory
.Setelah itu Anda cukup menjalankan gdb as
gdb
... dan gdb secara otomatis memuat dan mengeksekusi konten .gdbinit.
sumber
fg
setelahr
antrean, tindakannya masuk akalstart
perintah menyediakan shortcut untukb
+r
: stackoverflow.com/a/2119606/895245Kucing mengizinkan Anda tetap mengetik setelah gdb istirahat.
sumber
Make breakpoint pending on future shared library load? (y or [n])
ini secara otomatis akan mengasumsikan jawaban "Tidak".start
perintahPerintah ini adalah opsi bagus lainnya:
Ini seperti lari, tetapi juga menetapkan breakpoint sementara
main
dan berhenti di sana.Breakpoint sementara ini dinonaktifkan setelah tercapai.
starti
Ada juga yang terkait
starti
yang memulai program dan berhenti pada instruksi pertama sebagai gantinya, lihat juga: Berhenti pada instruksi kode mesin pertama di GDBHebat saat Anda melakukan beberapa hal tingkat rendah.
sumber
gdb -x <(echo run) --args $program $args
sumber