タブレットPC開発入門 C#編 第6回 デバッグをしよう

このページをDeliciousに追加 このページをはてなブックマークに追加 このページをYahoo!ブックマークに追加

2002年11月6日(水)版

タブレットPC開発入門 C#編 第6回 デバッグをしよう

デスクトップ、ノートブックから、第3のスタイルへ


■デバッグとは

 デバッグとはバグを取る事だ。昔はそれなりに大変な作業だったが、今は統合開発環境(以降IDE)があるのでとても楽にデバッグができる。ただし、IDEを使いこなすには多少コツがいる。

 「意外と知らないのね。デバッグのコツ。」(特に意味はない。ふと、松雪泰子が脳裏を過ぎっただけである。)しかしながら、このような人(松雪泰子のの事じゃないぞ。)をよく目にするのは事実だ。

■変数の値を表示する

 作成したアプリケーションが意図したとおりに動かないとき、怪しいと思う箇所で変数の値を調べたり、コードの動きを見たりする必要がある。簡単にデバッグするならこれまでに使用したWriteLineメソッドやMessageBoxで変数の中身を表示する方法がある。

 この方法は最も手軽だが欠点があって、バグ取りが完了したら使用したWriteLine等は消さなければならない。それはそれでまた、必要なところまで消してしまったり、新たなバグを生む危険を孕んでさえいる。

 とは言え、急ぐときやIDEに不慣れなときはこの方法が一番である。実際、プログラム開発の仕事なんかしていると、未だにこの方法はよく使う。自身が細心の注意を払えば別に問題はない。

■ブレークポイント

 ブレークと言っても、ここらで"KitKat"を食べようなどと言う意味ではない。ブレークポイントはコードを任意の場所で停止して、そのときの変数の値等を調べたりする事ができる大変便利な機能だ。

 Visual Studio.NETのIDEでブレークポイントを挿入するには、止めたい行の左の余白の部分をマウスでクリックするだけで良い。クリックするたびに、ブレークポイントが挿入されている事を示す赤丸が表示されたり消えたりする。ブレークポイントを挿入して、開始ボタンを押せば自動的にそこで止まってくれる。デバッグ中は「自動変数」ウィンドウに変数の値が表示されているので、何かおかしいところがないか調べる事ができる。

■コマンドライン引数の指定

 それからデバッグのときに便利な機能がある。今まではコマンドラインで何か引数を入力するために、コマンドプロンプトを開いてそこから実行していたが、これも実はIDEから指定できてしまう。いちいちコマンドプロンプトを開いて文字を入力する必要がないので、デバッグのときは重宝する。

 ただ、この機能はVisaul Studio.NETになって分かりにくくなってしまったように思う。実際、最初はどこにこの指定があるのか分からなくて迷った。コマンドライン引数を設定するにはまずソリューションエクスプローラでプロジェクト名をポイントし、プロパティウィンドウで「プロパティ ページ」ボタンを押す。そうするとプロパティページが現れるので「構成プロパティ」→「デバッグ」→「開始オプション」→「コマンドライン引数」だ。


 最初はここには何も入力されていないはずだが、例えば、CommandLineアプリケーションなら"test"と入力すれば、コマンドプロンプトで"CommandLine test"と入力したのと同じになる。

 この状態で先程挿入したブレークポイントで停止させてみると、args[0]に"test"が入っているのがお分かりいただけるだろうか。

■System.Diagnostics.Debug.WriteLine

 これは従来からVisual BasicにあるDebug.Printオブジェクトと思っていただければ良いだろう。例えば以下のようにSystem.Diagnostics.Debug.WriteLineにより、コード内の任意の箇所で変数の値等を表示できる。


System.Diagnostics.Debug.WriteLine("args[0]=" + args[0]);

 DebugのWriteLineの出力は「出力」ウィンドウに表示される。

 同じような機能にSystem.Diagnostics.Traceがある。両者の違いはDebugがデバッグビルド時のみ実行コードが生成される対し、Traceではリリースビルド時も実行コードが生成される。つまり、Traceは実運用時の不具合調査に使用する事ができる。

 ビルドの話が出たのでついでに解説しておくと、ビルドにはデバッグビルドとリリースビルドがあり、デバッグビルドには文字通りデバッグのために必要な情報が入っている分、実行ファイルのサイズが大きくなるし実行も遅くなる。尚、デバッグの機能はデバッグビルドでしか使用できない。

 これに対し、リリースビルドはこれも文字通りアプリケーションをリリースするためのビルド方法で、余計なデバッグ情報が入っていないために実行ファイルのサイズが小さく、かつコンパイル時にコードが最適化されるために高速な実行ファイルとなる。

 ちなみにプロジェクトを新規に作成したときはデバッグビルドになっている。

■ステップ実行

 ここまでのデバッグをやっても尚、問題が解決できないときがある。そんなときの最後の手段がステップ実行である。この場合、もはやコードを最初から1行ずつ実行して確かめていくしかない。ステップ実行を行うにはF11を押すか、「デバッグ」→「ステップ イン」メニューを選択する。

■今回の解説はいつか必ず役立つ

 デバッグは実際に問題が起きなければあまりピンとこないかも知れない。今はさっと読んで心のどこかに留めておくだけでも良いだろう。だが、今回解説したデバッグの機能はいつか必ず役に立つときが来る。人間が作る限りバグのないプログラムなどあり得ないからだ。

 次はそろそろコントロールでも使ってみようか。



タブレットPC開発入門 C#編 第6回 デバッグをしよう

Reported by Allergy


Last-modified: Sun, 24 May 2009 23:45:30 JST (3462d)