Saya mengetik help
saat berada di GDB tetapi tidak menemukan apa pun tentang step-in, step-over, dan step-out. Saya meletakkan breakpoint dalam program Majelis di _start
( break _start
). Setelah itu saya mengetik next
dan selesai debugging. Saya kira itu karena sudah selesai _start
dan tidak masuk seperti yang saya inginkan.
Adakah yang bisa membantu?
debugging
programming
gdb
Pichi Wuana
sumber
sumber
Jawaban:
help running
memberikan beberapa petunjuk:Ada
step
dannext
instuctions (dan juganexti
danstepi
).Jadi kita bisa melihat bahwa
step
langkah-langkah dalam subrutin, tetapinext
akan melangkah lebih subrutin.Tanda
step
danstepi
(dan tandanext
dannexti
) membedakan dengan kenaikan "baris" atau "instruksi".Terkait adalah
finish
:Banyak informasi yang lebih berguna ada di https://sourceware.org/gdb/onlinedocs/gdb/Continuing-and-Stepping.html
sumber
for(i=0;i<10;i++) { printf("%d\n",i); }
adalah satu baris sumber tetapi banyak instruksi.finish
perintah akan menyelesaikan stack frame saat ini, yang biasanya akan menyelesaikan subroutine saat ini dan kembali ke pemanggil.Saya datang ke sini karena saya memiliki pertanyaan yang sama. Saya akhirnya menemukan bahwa untuk tujuan saya kapan saja saya bisa menggunakan sesuatu seperti "step-out" dari sebuah loop, saya bisa mengatur breakpoint lain setelah loop dan kemudian membiarkan program
continue
untuk menyelesaikan loop dan menjalankan ke breakpoint sesudahnya. Maaf jika itu jelas bagi kebanyakan orang tetapi mungkin bermanfaat bagi seseorang yang mencari jawaban untuk pertanyaan ini.sumber