示例 adb 程序:adbsamp3

以下样本程序 adbsamp3.c 包含子函数调用的无限递归。

如果运行此程序来完成,那么将导致内存发生故障错误并退出。

int     fcnt,gcnt,hcnt;
h(x,y)
int x,y;
{
        int hi;
        register int hr;
        hi = x+1;
        hr = x-y+1;
        hcnt++;
        hj:
        f(hr,hi);
}
g(p,q)
int p,q;
{
        int gi;
        register int gr;
        gi = q-p;
        gr = q-p+1;
        gcnt++;
        gj:
        h(gr,gi);
}
f(a,b)
int a,b;
{
        int fi;
        register int fr;
        fi = a+2*b;
        fr = a+b;
        fcnt++;
        fj:
        g(fr,fi);
}
main()
{
        f(1,1);
}

使用 cc 命令编译程序以创建 adbsamp3 文件,命令如下:

cc -g adbsamp3.c -o adbsamp3

要启动调试会话,请输入:

adb adbsamp3