Hvad er forskellen mellem nexti og stepi i gdb?

Hvad er forskellen mellem nexti og stepi i gdb?

stepi er mere detaljeret end nexti . hvis du ringer til sum() fra main() funktion og derefter stepi når dig inde i sum()-funktionen, men nexti gør ikke.

Nedenfor er skærmbilledet, når du ringer til stepi da du var ved call of sum() instruktion (dvs. => 0x08048403 <+40>: call 0x8048419 <sum> ). stepi instruktion leder dig ind i sum() .

Hvis du gør nexti da du var ved call of sum() instruktion (dvs. => 0x08048403 <+40>: call 0x8048419 <sum> ) så bruger den den returnerede værdi fra sum-metoden og går til den næste instruktion af hovedmetoden, skærmbillede som nedenfor.

Konklusion :Brug stepi hvis du vil se alle maskininstruktioner, der skete i din processor. Brug nexti hvis du kun vil se maskininstruktionerne udført ved main() .


Forskellen er, hvordan call behandles:

  • stepi dykker ned i call
  • nexti kører call men fører dig ikke gennem dens kode