我編寫通過Linux TCP套接字進行通信的網絡應用程序。最近我已經注意到發送系統調用會導致應用程序崩潰。當兩個同伴都起來時它工作正常(我正在測試崩潰恢復)。但是,當一個同伴下來第二次崩潰執行這段代碼。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");
套接字已經準備並連接並且在第二個對等關閉之前執行了好幾次。我期望這個代碼返回-1值,但它只在輸出產生「out_tcp 11」,然後應用程序退出。沒有錯誤消息,沒有從發送返回的值。我在Valgrind下運行它,它說應用程序正常退出 - 沒有錯誤/警告消息。
有沒有人有任何想法如何調試它?使用的工具?因爲我沒有收到任何信息,所以我很困惑。
在此先感謝 Harnen
您使用的信號能夠幫助?你用'gdb'檢查過它嗎? –
Valgrind?這不是內存泄漏,在'gdb'下運行它。您可能因'SIG_PIPE'而退出。 –
[如何防止SIGPIPE或防止服務器結束?](http://stackoverflow.com/questions/6821469/how-to-prevent-sigpipe-or-prevent-the-server-from-ending) –