2010年4月15日 (木曜日)

12:46:13 # Life straceでネットワーク通信するアプリケーションを解析。 strace -p PID でプロセスにアタッチすると実行中の プロセスのシステムコールを見ることができます。 ネットワークに書き込んだり読み込んだりするところはシステムコールとしては通常 write / read で、straceの出力では通信内容が引数の文字列として見えます。 ただ、デフォルトでは文字列パラメータは先登の32バイトしか表示してくれないので、 -s で適切な文字列サイズを指定しましょう。とりあえず1024バイトくらいを指定すればよいんじゃないでしょうか。 パケットダンプしなくてもネットワーク通信内容はデバッグできるよ、というメモでした。

表示例:

read(4, "GET / HTTP/1.0\r\nUser-Agent: w3m/0.5.2\r\nAccept: text/html, text/*;q=0.5, image/*, application/*, video/*, audio/*\r\nAccept-Encoding: gzip, compress, bzip, bzip2, deflate\r\nAccept-Language: ja;q=1.0, en;q=0.5\r\
nHost: localhost:8088\r\nPragma: no-cache\r\nCache-control: no-cache\r\n\r\n"..., 2048) = 273
	
Junichi Uekawa

$Id: dancer-diary.el,v 1.94 2009/10/21 14:02:48 dancer Exp $