【发布时间】:2011-10-19 19:29:28
【问题描述】:
我编写了通过 Linux TCP 套接字进行通信的网络应用程序。最近我注意到发送系统调用使我的应用程序崩溃。当两个对等方都启动时它工作正常(我现在正在测试崩溃恢复)。但是当一个节点宕机时,执行这段代码就会崩溃。
fprintf(stderr, "out_tcp %d\n", out_tcp);
if(send(out_tcp, &packet, sizeof(packet), 0) == -1)
fprintf(stderr, "send TCP error");
fprintf(stderr, "after send");
Socket 已经准备好并连接,并在第二个对等方关闭之前执行了几次。我预计此代码会返回 -1 值,但它仅在输出时产生“out_tcp 11”,然后应用程序退出。没有错误消息,发送没有返回值。我在 Valgrind 下运行它,它说应用程序正常退出 - 没有错误/警告消息。
有人知道如何调试它吗?使用的工具?我很坚持这一点,因为我没有得到任何信息。
提前致谢 哈嫩
【问题讨论】:
-
你在使用信令吗?你用
gdb检查了吗? -
瓦尔格林德?这不是内存泄漏,在
gdb下运行。你可能会因为SIG_PIPE而退出。