EchoClientV2_Debug
EchoClientV2_apha - Shammerismでうまくいかなかったのでデバッグ。いつ Segmentation fault になっているのか?サーバーからの受け取り文字列は表示されていないのでその前、かつ、サーバーは送信文字を受け取っているのでその後。結局、追記した場所だ(当たり前か)。
まず、デバッグのために以下のように receiveMsgSize を表示させてみた。
// Receive message int receiveMsgSize = 0; receiveMsgSize = recv(sock, echo_buffer, sizeof(echo_buffer) - 1, 0); printf("receiveMsgSize:%d\n", receiveMsgSize);
結果、以下のように表示されるようになった。
$ ./eclient 127.0.0.1 10080 Test receiveMsgSize:4 Segmentation fault: 11
次の段階として、コードを以下のように変更。
// Receive message int receiveMsgSize = 0; receiveMsgSize = recv(sock, echo_buffer, sizeof(echo_buffer) - 1, 0); printf("receiveMsgSize:%d\n", receiveMsgSize); if( receiveMsgSize < 0 ){ error_exit("recv failed...\n"); } else { printf("DebugA\n"); printf("Received Message:%s\n", *echo_buffer); printf("DebugB\n"); }
おそらく、DebugAは出力されるがDebugBは出力されない。結果は以下の通り。
$ ./eclient 127.0.0.1 10080 Test receiveMsgSize:4 DebugA Segmentation fault: 11
悪いのはprintf("Received Message:%s\n", *echo_buffer);の実装、ということになるが、、、どう書くべきなんだ?文字列を出力するときどうしていたっけ・・・