Chinaunix

标题: 怪了,程序不让使用gdb调试? [打印本页]

作者: 虑而后能得    时间: 2008-08-29 22:06
标题: 怪了,程序不让使用gdb调试?
#include "apue.h"
#include <sys/wait.h>

static void        sig_int(int);                /* our signal-catching function */

int
main(void)
{
        char        buf[MAXLINE];        /* from apue.h */
        pid_t        pid;
        int                status;

        if (signal(SIGINT, sig_int) == SIG_ERR)
                err_sys("signal error");

        printf("%% ");        /* print prompt (printf requires %% to print %) */
        while (fgets(buf, MAXLINE, stdin) != NULL) {
                if (buf[strlen(buf) - 1] == '\n')
                        buf[strlen(buf) - 1] = 0; /* replace newline with null */

                if ((pid = fork()) < 0) {
                        err_sys("fork error");
                } else if (pid == 0) {                /* child */
                        execlp(buf, buf, (char *)0);
                        err_ret("couldn't execute: %s", buf);
                        exit(127);
                }

                /* parent */
                if ((pid = waitpid(pid, &status, 0)) < 0)
                        err_sys("waitpid error");
                printf("%% ");
        }
        exit(0);
}

void
sig_int(int signo)
{
        printf("interrupt\n%% ");
}


程序运行过了 没问题,可是在gdb中找不到啊 已经加了-g选项了 很苦恼啊

Screenshot.png (117.73 KB, 下载次数: 26)

Screenshot.png

作者: gawk    时间: 2008-08-29 22:15
应该是gdb xxx吧
xxx为可执行程序名字
作者: zszjxh    时间: 2008-08-29 22:22
gcc -g yourfile.c
gdb a.out
作者: Godbach    时间: 2008-08-29 22:25
编译的时候是需要加上-g选项的,不然没法调试
作者: MMMIX    时间: 2008-08-29 22:27
原帖由 Godbach 于 2008-8-29 22:25 发表
编译的时候是需要加上-g选项的,不然没法调试

不加 -g 不过是没有调试信息而已,调试还是可以的。
作者: benbenr    时间: 2008-08-29 22:50
LZ,你怎么不好好看书了?那个上面不是有写GDB的使用么?
作者: 虑而后能得    时间: 2008-08-30 09:39
标题: 回复 #6 benbenr 的帖子
晕了 呵呵 最近看别的了 忘了加a.out了
作者: 虑而后能得    时间: 2008-08-30 09:40
明白了 我再试试 多谢各位了




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2