设置断点

选定要设置断点的代码行,在行号的区域后面单击鼠标左键即可。

idapython在断点之后继续运行_调试技巧

开启调试会话

在代码中右键选择Debug,开始进入调试。

idapython在断点之后继续运行_右键_02


点击最上方红色方框指向的小虫子,也会进入断点模式:

idapython在断点之后继续运行_Debug调试技巧_03

idapython在断点之后继续运行_Debug调试技巧_04


IDE下方出现 Debug 视图,红色的箭头指向的是现在调试程序停留的代码行。

红色箭头悬停的区域是程序的方法调用栈区,在这个区域中显示了程序执行到断点处所调用过的所用方法,越下面的方法被调用的越早

单步调试

step over

idapython在断点之后继续运行_Debug调试技巧_05


点击红色方框中的按钮,程序向下执行一行。如果当前行有方法调用,这个方法将被执行完毕返回,然后到下一行。

step into

idapython在断点之后继续运行_idapython在断点之后继续运行_06


点击红色方框中的按钮,程序向下执行一行。如果该行有自定义方法,则运行进入自定义方法(不会进入官方类库的方法)。

Force step into

idapython在断点之后继续运行_idapython在断点之后继续运行_07


该按钮在调试的时候能进入任何方法。

step out

idapython在断点之后继续运行_右键_08

如果在调试的时候你进入了一个方法(如f2()),并觉得该方法没有问题,你就可以使用stepout跳出该方法,返回到该方法被调用处的下一行语句。值得注意的是,此时该方法已执行完毕。

Drop frame

idapython在断点之后继续运行_Debug调试_09


点击该按钮后,将返回到当前方法的调用处(如上图,程序会回到main()中)重新执行,并且所有上下文变量的值也回到那个时候。

只要调用链中还有上级方法,可以跳到其中的任何一个方法。

高级调试

跨断点调试

当程序中有多个断点时,想移动到下一个断点,点击如下图红色方框中的按钮,程序将运行到下一个断点处的代码。如果后面代码没有断点,再次点击该按钮将会执行完程序。

idapython在断点之后继续运行_右键_10

查看断点

idapython在断点之后继续运行_右键_11


点击红色方框中的按钮,可以查看曾经设置过的断点并可设置断点的一些属性。

idapython在断点之后继续运行_右键_12


箭头1指向的是曾经设置过的断点,箭头2可以设置条件断点(满足某个条件的时候,暂停程序的执行,如 i==33)。

结束调试后,建议在箭头1处把所设的断点删除(选择要删除的断点后,点击上方的红色减号)。

设置变量值

idapython在断点之后继续运行_Debug调试技巧_13

调试开始后,在红箭头指向的区域可以给指定的变量赋值(鼠标左键选择变量,右键弹出菜单选择setValue…)。这个功能可以更加快速的检测你的条件语句和循环语句。