Java開発の問題解決を助ける(1)
デバッグでのブレークポイント活用
IDEのデバッガを使ってみよう |
では、実際にサンプルプログラムを例にしてデバッガによる効率的な問題個所の切り分けを行ってみましょう。サンプルプログラムのコードはここ(sample.zip)からダウンロードできます。IDEにはSun
Java Studio Enterpriseを使用し(評価版をダウンロードして利用できます)、ツールを活用しての「問題の切り分け方」をご紹介します。読者の皆さんは、ぜひご自分で試してみてください。なお、ここでの目的は、Sun
Java Studio Enterpriseの紹介ではありませんのでご注意ください。
■エラーを含んだサンプルプログラム
このプログラムはXML操作を行います。そのため、JDK 1.3以前のJavaVMを使用されている場合には別途JAXP等の必要なライブラリをクラスパスに追加してください。このサンプルプログラムは次のようなXMLファイルを読み込んで、その内容を標準出力に出力するようなプログラムです。
|
期待する出力例
|
このプログラムを実行したところ、期待に反して次のような出力が得られました。
|
author に名前(Takayuki Okazaki)が出力されるべきところですが、nullが表示されてしまっています。ではさっそく、IDEを使ってどこに問題があるのか、分析していきましょう。
■環境の準備
デバッグを行うためのIDEとして、今回はSun Java Studio Enterpriseを使ってみます。
- Sun Java Studio Enterpriseをお持ちでない場合には、次のURLから90日間すべての機能が利用できる評価版をダウンロードすることができます。インストール手順については、インストールガイドを参照してください。
http://jp.sun.com/products/software/tools/jsenterprise/download.html
- このサンプルのためのプロジェクトを作成します。メニューの[プロジェクト]から[プロジェクトマネージャ]を選択し、プロジェクトを新規作成します。ここではプロジェクト名“Sample”を作成しています。
- サンプルのファイルを展開したディレクトリをマウントします。メニューの[ファイル]から[新規]を選択し、ローカルディレクトリを選択します。
- プロジェクトが作成できたら、最初のサンプル Sample01クラスを実行します。ファイルシステムのタブでSample01を選択し、メニューの[構築]から[引数を設定]でsample.xmlへの絶対パスを指定します。なお、パスに空白が含まれる場合は""(ダブルクオート)で囲む必要があります。
■デバッガによるプログラムの実行
Sun Java Studio Enterpriseのような統合開発環境ではプログラムを開発し、実行する際に通常の実行とデバッグ実行という2種類の実行モードを持っています。通常の実行ではデバッグ機能を使用することができませんが、デバッガツールによるパフォーマンス劣化が起こりません。今回はデバッガツールを使用しますのでデバッグモードによる実行を行います。
デバッグ実行を行う際には主に次の2つの機能を使いながらプログラムの動きを制御し、問題個所を絞り込みます。
- ブレークポイントの設定
- ステップ実行
ブレークポイントは、プログラムの実行を一時停止する条件または場所を設定する機能です。実行を一時停止することによりその時点における各変数の内容を参照したり、スレッドの状態を見ることができます。このブレークポイントを問題がありそうな部分に設定し変数の内容を検討することによって、どの部分までは正常に動作していて、どこから異常が起こっているのかを限定していきます。
ステップ実行はプログラムを1行ずつ一時停止しながら実行する機能です。プログラムの動作を1つ1つ確かめながら変数の内容をチェックすることによって、問題の起こった個所を特定します。ステップ実行は1行ずつ実行していかなければならないため非常に時間がかかります、ブレークポイントによって問題個所を絞り込んでからステップ実行による確認を行うと効率的です。
2/3 |
INDEX |
||
第1回 Java開発の問題解決を助ける | ||
Page1 問題はどんなところに潜んでいるのか 問題のタイプと解決の視点 ツールを活用する |
||
Page2 |
||
Page3 ブレークポイントを設定し問題個所を絞り込む |
- 実運用の障害対応時間比較に見る、ログ管理基盤の効果 (2017/5/9)
ログ基盤の構築方法や利用方法、実際の案件で使ったときの事例などを紹介する連載。今回は、実案件を事例とし、ログ管理基盤の有用性を、障害対応時間比較も交えて紹介 - Chatwork、LINE、Netflixが進めるリアクティブシステムとは何か (2017/4/27)
「リアクティブ」に関連する幾つかの用語について解説し、リアクティブシステムを実現するためのライブラリを紹介します - Fluentd+Elasticsearch+Kibanaで作るログ基盤の概要と構築方法 (2017/4/6)
ログ基盤を実現するFluentd+Elasticsearch+Kibanaについて、構築方法や利用方法、実際の案件で使ったときの事例などを紹介する連載。初回は、ログ基盤の構築、利用方法について - プログラミングとビルド、Androidアプリ開発、Javaの基礎知識 (2017/4/3)
初心者が、Java言語を使ったAndroidのスマホアプリ開発を通じてプログラミングとは何かを学ぶ連載。初回は、プログラミングとビルド、Androidアプリ開発、Javaに関する基礎知識を解説する。
|
|