以下は JE2BWM ほかが作成した翻訳 です。 原文は University of California より GFDL で配付されており、 この翻訳も GFDL に従います。
原文: Debugging server components   (翻訳対象の更新日付は 9:43 PM UTC, August 13 2005 です)。

サーバコンポーネントをデバッグする

boinc.gif
(英語のみ)

BOINC サーバソフトウエアをデバッグする技術の福袋

ログ・ファイル

多くのエラー状況はログ・ファイルに記録されます。 ログ・ファイルがどこにあるか確認してください。 特定の WU または リザルトに注目しているときは、 それらのログ・ファイルに grepをかけます。 (対象のWUまたはリザルトの ID が 12345 なら)、 WU#12345 または RESULT#12345 で grep をかけてください。 html/ops ページでこのためのインタフェースを提供しています。

データベース問合わせの追跡

db/db_base.C のなかのシンボル SHOW_QUERIES のコメントをはずしてから、 全てをリコンパイルすれば、データベースへのすべての問合わせが、 標準エラー出力(stderr)に出力されます。 (デーモンで動く場合は、 これらはログ・ファイルに出ます。 コマンドライン・アプリケーションでは、 起動した端末に表示されます)。 この出力は饒舌ではありますが、データベースレベルでの問題を突き止めるには、 とても有用な手段になります。

スケジューラのコア・ダンプが採れるようにする

ソースコードの sched/main.C の中に以下の行を追加します。

#define DUMP_CORE_ON_SEGV 1
そしてコンパイルし直してください。

スケジューラをデバッガの上で走らせる

このシステムのスケジューラは、 CGI で動作するプログラムです。 標準入力(stdin)を読んで、標準出力(stdout)に書き出しますから、 以下のようにして、 gdb のようなコマンドライン・デバッガのもとで走らせることができます。
  • "scheduler_request_X.xml" ファイルを、 クライアントからシステムのスケジューラが走っているマシンにコピーします。 (ここで、X はプロジェクトの URLです)
  • そのスケジューラをデバッガのもとで走らせ、上記ファイルを標準入力に割り当てます。 つまり、以下のようにします。
     
       gdb cgi
       (set a breakpoint)
       r < scheduler_request_X.xml
    
  • スケジューラが要求を拒否しないように、 以下のようにしてデータベースを誤魔化さざるを得ないかもしれません。
       update host set rpc_seqno=0, rpc_time=0 where hostid=N
    
    以上の手法は、プロジェクトがなぜ、'no work available' というメッセージを出すのか理解するのに有用です。

    同じことをする別の方法のひとつは、 handle_request.C を変更して、 sreply.write(fout) の直前に debug_sched(sreq, sreply, "../debug_sched") の呼出しを挿入することです。 こうしてリコンパイルした後で、プロジェクトのルート・ディレクトリに 'debug_sched' という名前のファイルを、touch コマンドで作ります。 こうすると、それ以降のスケジューラへの要求と応答が、 cgi-bin/ ディレクトリの中に要求ごとの小さなファイルとして書き出されます。 これらのファイルの名前は、 sched_request_H_R の形をしており、 その中で、 H は hostid 、 R は RPC順序番号の値です。 この饒舌なデバッグ出力を停めるには、単純に 'debug_sched' ファイルを削除してください。

    MySQL インターフェース

    以下のような MySQL ツールが上手く使えるようになってください。
    BOINCの訳のメインページに戻る | (原文のメインページに戻る)
     

    最終更新時刻 00:51:00, 2006年08月12日(JST)
    Copyright © 2008 University of California. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation.
    Copyright © 2008 Komori Hitoshi(je2bwm at jarl.com). Japanese translation from English web pages on BOINC. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation.