Saat menjalankan program di GDB, biasanya, argumen untuk program diberikan pada run
perintah. Apakah ada cara untuk menjalankan program menggunakan GDB dan juga memberikan argumen dalam skrip shell?
Saya melihat jawaban dalam pertanyaan terkait, menyebutkan bahwa kami dapat melampirkan GDB ke program setelah skrip mulai dijalankan. Tetapi kemudian saya harus 'menunggu' programnya.
Apakah ada cara lain untuk melakukan ini?
gdb
command-line-arguments
terkulai
sumber
sumber
Jawaban:
Anda dapat menjalankan gdb dengan parameter --args,
Jika Anda ingin menjalankannya secara otomatis, letakkan beberapa perintah dalam file (mis. 'Run') dan berikan sebagai argumen: -x / tmp / cmds. Secara opsional, Anda dapat menjalankan dengan mode -batch.
sumber
man gdb
tidak mengandung--args
, itu sebabnya saya tidak menemukannya.gdb --help
tidak.info gdb
waktu berikutnya :-).info
. Jika Google atau Stack Overflow berhenti bekerja XDindex-search
). Cobainfo gdb
:, lalu 'i', lalu '--args'. Ini akan membawa Anda langsung ke sana.-ex=r
adalah kependekan dari-ex=run
dan memberitahu gdb untuk menjalankan program Anda segera, daripada menunggu Anda mengetik "run" di prompt. Kemudian--args
mengatakan bahwa semua yang mengikuti adalah perintah dan argumen, seperti yang biasanya Anda ketik di prompt perintah.sumber
-exe=r
sangat berguna!Cara lain untuk melakukan ini, yang secara pribadi saya temukan sedikit lebih nyaman dan intuitif (tanpa harus mengingat
--args
parameter), adalah mengkompilasi secara normal, dan menggunakanr arg1 arg2 arg3
langsung dari dalamgdb
, seperti:sumber
Anda dapat membuat file dengan konteks:
Dan panggilan gdb suka
sumber
gdb memiliki
--init-command <somefile>
tempat somefile memiliki daftar perintah gdb untuk dijalankan, saya menggunakan ini untuk memiliki//GDB
komentar dalam kode saya, lalu `sebagai skrip, yang menempatkan perintah untuk memuat simbol debug, dan kemudian menghasilkan daftar perintah break untuk meletakkan break point untuk setiap
//GDB
komentar, dan mulai menjalankannyasumber
Jika
--args
parameter tidak berfungsi pada mesin Anda (yaitu pada Solaris 8), Anda dapat memulai gdb likeDan Anda dapat menggabungkan ini dengan memasukkan file ke stdin dan "menjalankan dengan segera":
sumber
Selain jawaban Hugo Ideler. Saat menggunakan argumen yang memiliki awalan
--
atau suka sendiri-
, saya tidak yakin akan konflik dengan gdb satu.Tampaknya gdb mengambil semua
args
opsi setelah sebagai argumen untuk program.Pada awalnya saya ingin memastikan, saya berlari gdb dengan tanda kutip di sekitar argumen Anda, itu dihapus saat peluncuran.
Ini juga berfungsi, tetapi opsional:
Ini tidak berfungsi:
Dalam hal ini,
-tui
digunakan sebagai parameter program saya bukan sebagai gdb.sumber
Sangat terlambat, tapi di sini ada metode yang bekerja selama
gdb
sesi.kemudian
Ini akan mengembalikan banyak kecocokan, yang bermanfaat adalah
set args
.kemudian
Ini akan menjalankan program, meneruskan ke argumen utama (argc, argv) dan jumlah argumen.
sumber