FWIW logika yang sama dari step over / step berlaku untuk Xcode / Swift
Honey
Jawaban:
270
Pertimbangkan kode berikut dengan penunjuk instruksi Anda saat ini (baris yang akan dieksekusi berikutnya, ditunjukkan oleh ->) di f(x)baris dalam g(), yang dipanggil oleh g(2)baris di main():
publicclass testprog {staticvoid f (int x){System.out.println ("num is "+(x+0));// <- STEP INTO}staticvoid g (int x){-> f(x);//
f(1);// <----------------------------------- STEP OVER}publicstaticvoid main (String args[]){
g(2);
g(3);// <----------------------------------- STEP OUT OF}}
Jika Anda melangkah ke titik itu, Anda akan pindah ke println()saluran masuk f(), masuk ke panggilan fungsi.
Jika Anda adalah untuk melangkah lebih pada saat itu, Anda akan pindah ke f(1)baris dalam g(), melangkahi fungsi panggilan.
Fitur lain yang berguna dari para pengingkar adalah langkah keluar atau langkah kembali. Dalam hal ini, langkah pengembalian pada dasarnya akan menjalankan Anda melalui fungsi saat ini sampai Anda naik satu tingkat. Dengan kata lain, itu akan melangkah f(x)dan f(1), kemudian kembali ke fungsi panggilan untuk berakhir g(3)di main().
Eclipse (setidaknya Europa, yang merupakan satu-satunya yang saya miliki saat ini) digunakan F5untuk step into, F6untuk step overdan F7untuk step return.
"lalu kembali ke fungsi panggilan untuk berakhir di g(3); dalam main()" <- Apakah Anda mengasumsikan bahwa Anda sampai ke lokasi Anda saat ini dari g(2)dan setelah Anda semua selesai, Anda kembali ke baris berikutnya g(3)?
Sayang
1
@ Sayang, ya, ada beberapa ambiguitas di sana (apakah g(2)atau g(3)panggilan sedang aktif) jadi saya sudah membersihkannya di paragraf pertama. Terimakasih atas peringatannya.
paxdiablo
144
Saat men-debug baris kode, inilah skenario yang biasa:
( Langkah Ke ) Suatu metode akan dipanggil, dan Anda ingin men-debug ke dalam kode metode itu, jadi langkah selanjutnya adalah masuk ke metode itu dan melanjutkan debugging langkah-demi-langkah.
( Step Over ) Suatu metode akan dipanggil, tetapi Anda tidak tertarik untuk debugging doa khusus ini, jadi Anda ingin debugger untuk mengeksekusi metode itu sepenuhnya sebagai satu langkah penuh.
( Langkah Kembali ) Anda selesai men-debug metode ini langkah demi langkah, dan Anda hanya ingin debugger untuk menjalankan seluruh metode sampai kembali sebagai satu langkah penuh.
( Lanjutkan ) Anda ingin debugger untuk melanjutkan eksekusi "normal" bukan langkah demi langkah
( Line Breakpoint ) Anda tidak peduli bagaimana itu sampai di sana, tetapi jika eksekusi mencapai baris kode tertentu, Anda ingin debugger untuk sementara menghentikan eksekusi di sana sehingga Anda dapat memutuskan apa yang harus dilakukan.
Eclipse memiliki fitur debugging canggih lainnya, tetapi ini adalah fundamental dasar.
Anda tidak dapat melihat detail metode dengan menggunakan langkah mundur. Jika Anda ingin melewati garis saat ini, Anda dapat menggunakan langkah, maka Anda hanya perlu menekan F6untuk hanya sekali untuk pindah ke baris berikutnya. Dan jika Anda berpikir ada sesuatu yang salah dalam metode ini, gunakan F5untuk memeriksa detailnya.
Jadi jika saya melakukan step over dan jika fungsi berisi beberapa pernyataan cetak akankah pencetakan terjadi atau tidak?
username_4567
2
Langkah Ke Ekspresi berikutnya pada baris yang saat ini dipilih untuk dieksekusi dipanggil, dan eksekusi ditunda di baris yang dapat dieksekusi berikutnya dalam metode yang dipanggil.
Step Over Baris yang dipilih saat ini dieksekusi dan ditangguhkan pada baris yang dapat dieksekusi berikutnya.
Jawaban:
Pertimbangkan kode berikut dengan penunjuk instruksi Anda saat ini (baris yang akan dieksekusi berikutnya, ditunjukkan oleh
->
) dif(x)
baris dalamg()
, yang dipanggil olehg(2)
baris dimain()
:Jika Anda melangkah ke titik itu, Anda akan pindah ke
println()
saluran masukf()
, masuk ke panggilan fungsi.Jika Anda adalah untuk melangkah lebih pada saat itu, Anda akan pindah ke
f(1)
baris dalamg()
, melangkahi fungsi panggilan.Fitur lain yang berguna dari para pengingkar adalah langkah keluar atau langkah kembali. Dalam hal ini, langkah pengembalian pada dasarnya akan menjalankan Anda melalui fungsi saat ini sampai Anda naik satu tingkat. Dengan kata lain, itu akan melangkah
f(x)
danf(1)
, kemudian kembali ke fungsi panggilan untuk berakhirg(3)
dimain()
.Eclipse (setidaknya Europa, yang merupakan satu-satunya yang saya miliki saat ini) digunakan F5untuk
step into
, F6untukstep over
dan F7untukstep return
.sumber
g(3)
; dalammain()
" <- Apakah Anda mengasumsikan bahwa Anda sampai ke lokasi Anda saat ini darig(2)
dan setelah Anda semua selesai, Anda kembali ke baris berikutnyag(3)
?g(2)
ataug(3)
panggilan sedang aktif) jadi saya sudah membersihkannya di paragraf pertama. Terimakasih atas peringatannya.Saat men-debug baris kode, inilah skenario yang biasa:
Eclipse memiliki fitur debugging canggih lainnya, tetapi ini adalah fundamental dasar.
Lihat juga
sumber
melangkah masuk akan menggali panggilan metode
melangkah lebih dari hanya akan mengeksekusi baris dan pergi ke yang berikutnya
sumber
Anda tidak dapat melihat detail metode dengan menggunakan langkah mundur. Jika Anda ingin melewati garis saat ini, Anda dapat menggunakan langkah, maka Anda hanya perlu menekan F6untuk hanya sekali untuk pindah ke baris berikutnya. Dan jika Anda berpikir ada sesuatu yang salah dalam metode ini, gunakan F5untuk memeriksa detailnya.
sumber
Langkah Ke Ekspresi berikutnya pada baris yang saat ini dipilih untuk dieksekusi dipanggil, dan eksekusi ditunda di baris yang dapat dieksekusi berikutnya dalam metode yang dipanggil.
Step Over Baris yang dipilih saat ini dieksekusi dan ditangguhkan pada baris yang dapat dieksekusi berikutnya.
sumber