免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 875 | 回复: 1
打印 上一主题 下一主题

为什么gdb调试的时候,printf在程序结束后一起显示 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-12-15 13:48 |只看该作者 |倒序浏览
#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");
        }
}

论坛徽章:
0
2 [报告]
发表于 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);
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP