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");

おわりに

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

PHPが学べるおすすめプログラミングスクール

この運営ブログをみて、もしdtn.jp管理人のようにサイトをゼロから作ってみたいという思いに駆られた方は、サイト開発やプログラミングをオンラインで受講できるプログラミングスクールの活用をしてみてはいかがでしょうか。サーバ/WordPress/HTML/CSS/JS/PHP/SQLなどの基本さえ分かれば、ゼロからサイト立ち上げもポンポンできるようになって、今なら仕事や転職にも役立つのでオススメです。

PHPも学べるオンラインスクール

  • CodeCampAWS Cloud9を使ったクラウド上のIDEが用意されているので、ネットにつながればスタート開始可能というゴージャスなスクールです。講師も選べて、Webマスターコースならプログラミング経験0でも一気にフロントエンドからバックエンドまでマスターできます。
  • ウェブカツJava言語やRuby言語なんぞ教えん!という、初心者にありがちな挫折ポイントがよく分かってるスクールです。フロントエンドエンジニアに必要なスキルセット&PHPがマスターできます。
  • フリークス HTML/CSSから始まり、MySQLやLinuxからPHPの変数や分岐やループ、クラスやPDOに最後はMVCまで教えてくれるので、そこまで分かればなんでもできそうです。メンターに質問もし放題がいいですね。
  • テックアカデミー法人のIT研修もやってる業界最大手・受講者数No.1のスクールです。メンターとの定期オンライン面談やチャットサポートなどもあり、大手ならではインフラ環境がウリです。PHPと合わせてjQueryもマスターできる、PHP/Laravelとフロントエンドコースがおすすめです。

オンラインスクールのデメリット

孤独になりがちなサイト制作も、優しいメンターがそばにいてくれれば凄い楽しそうですが、もちろんデメリットもあります。お金がかかるという点です。ひたすらググって、本を読んでよりは確実にコストがかかってしまいます。とはいえ、多少の余裕があるなら、こんなご時世なので時間と労力を買った方が良いと思います。