GDB调试之跳转执行代码(十六)

跳转执行即跳转到指定位置去执行代码,也就是不按照正常的执行顺序往下执行代码而是跳过某些代码或者重复的反复的执行某些代码。这是非常有用的,假如不小心错过了观察某个函数的执行或者错过了某个重要的代码,可以通过jump命令重新执行一遍相关的代码。

jump命令语法如下所示:
jump location(j location):即在指定位置恢复执行,如果存在断点,执行到指定位置时将中断下来。如果没有断点,则不会停下来,因此,我们通常会在指定位置设置一个断点。跳转命令不会更改当前堆栈帧、堆栈指针、程序计数器以外的任何寄存器。

测试代码如下所示:

#include <iostream>
#include <cstring>

using namespace std;

int test_work(const char *name, int age) {
    cout << "name=" << name << ",age=" << age << endl;
    return 0;
}

int main() {
    int age = 25;
    char name[100] = {0};

test_label:
    strcpy(name, "SimpleSoft");
    test_work(name, age);
    memset(name, 0, sizeof(name));
    age = 0;
    return 0;
}

使用jump命令向前跳转:  

使用jump命令向后跳转:

posted @ 2024-01-16 17:35  TechNomad  阅读(29)  评论(0编辑  收藏  举报