Chinaunix

标题: 为什么gdb调试的时候,printf在程序结束后一起显示 [打印本页]

作者: dida_327    时间: 2005-12-15 13:48
标题: 为什么gdb调试的时候,printf在程序结束后一起显示
#include <stdio.h>
#include <error.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <signal.h>

static int flag=0;
void myself()
{
        flag=1;
        printf("get signal SIGALRM\n");
}
main ()
{
        flag=2;
        signal(SIGALRM,myself);
        alarm(50);
        while(1)
        {
                sleep(1);
                if(flag==1)
                        exit(0);
                if(flag==2)
                        printf("wait for interrupt\n");
        }
}
作者: booklijian    时间: 2005-12-15 19:30
标题: 存在这个问题吗?
我用你的代码在红帽9下试了一下,没有发现这个问题。如果存在问题的话,我想是否是你调试的源代码里面printf语句末尾没有加上 "\n"而在上面的源代码中添加了?我调试的部分显示结果如下:
(gdb) s
25                              printf("wait for interrupt\n");
(gdb) s
wait for interrupt
21                      sleep(1);
(gdb) s
s
s
22                      if(flag==1)
(gdb) s
24                      if(flag==2)
(gdb) s
25                              printf("wait for interrupt\n");
(gdb) s
wait for interrupt
21                      sleep(1);
(gdb) s
s
s22                     if(flag==1)
(gdb) s
24                      if(flag==2)
(gdb) s
25                              printf("wait for interrupt\n");
(gdb) s
wait for interrupt
21                      sleep(1);




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