linux下gdb調試 | next, nexti, step, stepi單步調試詳解

在gdb中,有next, nexti, step, stepi等指令來單步調試程序,他們功能各不相同,區別在於單步的“跨度”上。

next 單步到程序源代碼的下一行,不進入函數。
nexti 單步一條機器指令,不進入函數。
step 單步到下一個不同的源代碼行(包括進入函數)。
stepi 單步一條機器指令。

可以兩兩分類來記住:

  1. next和nexti(即n和ni)是下一條,不進入函數內部,比如說在某一行發生了函數調用,next/nexti就繼續到下一行。next是在源碼層面的下一行,而nexti就是機器指令層面的,單步到下一個機器指令。

  2. step和stepi(即s和si)就是單步步入,進入函數內部,比如說在某一行發生了函數調用,step/stepi就會進入函數體內部,把函數體執行一遍,再返回執行下一條指令。同理,step是在源碼層面的操作指令,stepi是在機器指令層面的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章