‘gdb’ タグのついている投稿

gdbの使い方 Apacheをデバッグに役立つTips

2009 年 2 月 24 日 火曜日

Apacheをシングルプロセスで立ち上げる

Apache ハンドラーを開発しているときなど、httpd を 直接 gdbにかけたい場合、シングルプロセスで起動するとデバッグしやすい。

具体的には下記のように、「-X」オプションをつけて、apacheを起動します。

$ sudo gdb httpd
gdb > run -X -f /etc/httpd/conf/httpd.conf

ブレークポイントをソース中に設定する

gdbで、”’break 30”’とかやってもいいが、ソース中でbreak pointを設定することもできる。
特定の条件下の場合のみbreakさせたい場合などに便利。

signal.hをincludeしてSIGTRAPを投げるとbreakする。

サンプルコード

 #include <stdio.h>
 #include <signal.h>

 int main() {

        printf("a\n");
        raise(SIGTRAP);
        printf("b\n");

        return 0;
 }

参考書籍

Apache モジュールプログラミングガイド GDBハンドブック

参考ページ

gdbの使い方 基本編

2009 年 2 月 23 日 月曜日

基本コマンド

使う前にgccのオプションに「-g」をつけてコンパイルしてから使う。

コマンド 説明
break N N行目でブレーク。
break function_name 関数function_nameを呼んでいる箇所でブレーク。
print var 変数varの内容を表示。
list line_number line_number行目のソースを表示
list function_name 関数function_nameのソースを表示
step 1ステップずつ実行

動いているプロセスをデバッグ

実行ファイルの次にプロセスIDを指定する。

$ gdb /usr/local/bin/apache/apache <PID>

参考文献

GDBハンドブック

参考URL