156 用 GDB 调试程序

add.h

#ifndef LTTC_ADD_H_
#define LTTC_ADD_H_

extern int addend;
extern int add(int *pz);

#endif

add.c

#include "add.h"

int add(int *pz)
{
    if (pz) {
        pz += addend;  // fixed: use '*pz` instead
        return 0;
    }   
    else 
        return -1; 
}

zr.c

#include <stdio.h>
#include <assert.h>
#include <unistd.h>
#include "add.h"

int addend = 1;  // defintion

int main(int argc, char *argv[])
{
    int zr = 0, res;

    printf("argc=%d\n", argc);
    if (argc > 1)
        printf("1st parameter is %s\n",
            argv[1]);

    res = add(&zr);
    pause();
    assert(res == 0); 
    assert(zr == 1); 

    return 0;
}