VC,Windbg,gdb执行到指定代码行方法

在调试的时候,当执行到一段代码时,为了调试或者其他目的需要,有时候需要对一些或者几行代码多次执行或者跳过几行代码的执行,这是很有用的,比如下面的一个循环:

for(int i=0;i<num;i++)
{
//do something
}

也许num很大,但是我们又想看看前面几次循环执行的效果,这时候就需要前面提到的调试功能了,直接跳出循环,执行循环后面的代码。当然也可以跳到循环前面的代码执行,下面以对VC,Windbg和Linux的gdb三个调试器分别进行说明。

1.VC调试器的方法

VC对源代码级的调试支持得还是相当的好,特别是应用层代码的调试,而且执行到指定代码行的功能也是相当的简单,如下图所示。


将鼠标放在当前执行的代码行位置,这时会看到提示,说可以拖动箭头到想执行的代码行位置,然后就可以继续执行了。

2.Windbg方法

windbg可以用两种方法来达到这个目的。

第一种方法,如下图所示。


将焦点定位到你想执行的代码行,然后选择Edit菜单,选择“Set Current Instruction”子菜单即可,效果和VC一样。

第二种方法要麻烦一些,如下图所示。


可以通过修改eip的地址来达到执行指定代码行的功能,对x64位系统来讲,程序指针寄存器是rip,32位是eip,可以先执行r命令,查看寄存器的状态,如上图所示。然后切换到汇编模式,查看你想执行的那一行代码的地址,然后执行r rip=address命令来达到相同效果。

3.Linux gdb

gdb的功能很强大,要达到这个效果也很简单,如下图所示。

执行jump命令即可,如上图所示,想要到16行去执行,执行jump 16就可以了。

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。