gdbとは

linuxには標準でインストールされているデバッガです。gdbでPHPをデバッグする方法についてこちらのページで詳細に説明してあったので試しにやってみました。

gdbの使い方

gdbがlinuxにインストールされていれば、やり方はとっても簡単です。まずはgdbを起動。gdbコンソールが立ち上がってくれます。

>gdb
GNU gdb 6.1.1 [FreeBSD]
Copyright 2004 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for details.
This GDB was configured as "i386-marcel-freebsd".
(gdb)

起動後は、PHPをコアファイルからコマンドで読み込みます。

(gdb) file /usr/local/php5/bin/php

デバッグしてみたいファイルをrunで走らせればOKです。Pathは絶対パスで指定して下さい。

(gdb) run /www/htdocs/index.php

問題が無ければ、こんな感じで終わってくれます。

Program exited normally.
(gdb)

デバッグで判明したバグ

dtn.jpのインデックスPHPでやってみたところ、inlude()やrequire()でファイルを読み込んでいるあたりに、相対パスのままで指定してしまっているところが多々あり、エラーを吐き出してくれていました。

相対パスのままでもPHPがファイルを探し回ってくれているため、プログラム的には問題なく動いてしまいますが、けっこうな負荷はかかってたと思います。gdbデバッガ流石ですね。

PHPのinclude()の動き

PHPのinclude()の動きについてはこちらをご参照どうぞ。現在参照中のファイルのフルパス+ファイル名で、パスをきっちり書き直しておきました。

include(dirname(__FILE__) . "/etc/function.php");

おわりに

少ないプロセスは大切に使わないといけませんね。

ABOUT dtn.jp

この運営ブログをみてdtn.jpの運営サイトに興味をお持ちになった方は下記のリンク集からサイトをご参照ください。PHP・SQL・JS・HTML・CSSや様々なAPIでゼロから立ち上げたサイトを複数運営しています。

dtn.jp関連サイト

  • ディレクトリ型検索エンジンdtn大手は全てサービスを終了してしまい、中小でも運営を継続するところがほとんど無くなったディレクトリ型検索エンジンを、2002年から細々運営しております。今も申請されたサイトは実際に管理人が訪問して確認後に登録しています。是非登録どうぞ。
  • 猫ネコサーチエンジン猫・ペットサイト専用のディレクトリ型検索エンジンです。登録サイトはサイトのスクリーンショット付きでカテゴリに掲載をいたします。
  • 画像掲示板の泉画像・YouTube・ニコニコ動画・Tiktokの貼り付けが可能な匿名画像掲示板です。27ジャンルに分かれた掲示板に、それぞれ100スレッドまで立てることが可能です。
  • ツイータンTwitter APIを使って10分おきに収集したTwitterトレンドワード・人気ハッシュタグデータを、月別に集計してランキング形式で公開しています。年間トレンドワードも公開中。
  • Keyword Tool++Yahooショッピングや楽天のトレンドワードデータを日次収集し、EC系の人気キーワードをラインキング形式でご紹介しています。各ワードの検索ボリュームや関連語、24か月の検索ボリュームをグラフで確認が可能です。
  • 消費者金融の泉カードローン商品を取り扱う金融業者を一覧で比較可能としたサイトです。カテゴリ別、人気度別、限度額別、金利別に比較可能です。
  • TrendinGファッションブランドを人気アイテムヒット率でランキング化し、一覧でご紹介しているサイトです。

各サイトの開発方法などについて

各サイトの開発方法や運用トラブルについては、当ブログで不定期にご紹介しています。Twitterで新着記事のお知らせもしています。宜しければフォロー下さい。