: EasyBuggy / EasyBuggy Boot - Eclipseを使って同時に開発・デバッグする


EasyBuggy / EasyBuggy Bootとは

メモリリーク、デッドロック、JVMクラッシュ、SQLインジェクションなど、バグや脆弱性の動作を理解するためにつくられたバグだらけのWebアプリケーションです。Apache 2.0ライセンスで公開されています。

EasyBuggyは基本的な技術のみが使われていますが、EasyBuggy BootはSpring Bootなどの新しい技術が使われています

やりたいこと

EasyBuggyEasyBuggy Bootを同時に実行・デバッグしたい。
具体的には下記のようなことを実現したい。

  • 伝統的なJavaのコードとSpring Frameworkに則ったコードを比較したい
  • それぞれのコードにおける脆弱性の修正を試みたい
  • それぞれの環境の切り替えのコストを下げたい

インストール

前提条件

Eclipseがインストールされていること。

また、GitとMavenがインストールされ、パスが通っていること。
下記のコマンドを実行することで確認が可能。

$ git --version
$ mvn -version

Eclipseプロジェクトの作成

EasyBuggy
$ git clone https://github.com/k-tamura/easybuggy.git
EasyBuggy Boot
$ git clone https://github.com/k-tamura/easybuggy4sb.git

Eclipseへのインポート

  1. File > Import を選択する
  2. Maven > Existing Maven Projects を選択し、Import Maven Projectsダイアログを表示する
  3. Select root directory に先ほどcloneしたフォルダ2つを選択する
  4. Finish ボタンを押す

EasyBuggyの独自設定

Serverを追加

  1. Serversビューを開き、右クリック。 New > Server を選択する
  2. Tomcat v8.5 Server(他のバージョンでも良いと思う)を選択し、Nextボタンを押す
  3. Available から easybuggy を選択する。Add ボタンを押して Configured に移動させる
  4. Finish ボタンを押す

ポートを変更

そのままでは、EasyBuggy Bootと利用しているポートが衝突するため、ポートを変更する。

  1. 追加されたサーバーをダブルクリックし、Overviewビューを表示する
  2. Portsタブ以下のPort Name:HTTP/1.1のPort Numberを任意の値に書き換える(例: 9080)

EasyBuggy Boot側のポートを変更するよりも、EasyBuggy側のポートを変更するほうが手軽だと思われる。
EasyBuggy Boot側のポートを変更する場合は、src/main/resources以下のapplication.propertiesを書き換える。

パスを変更

EasyBuggy内の一部のページは、パスを / (サーバールートパス)に設定しないと正常に動作しない。

  1. 追加されたサーバーをダブルクリックし、Overviewビューを表示する
  2. 下部の Modules を選択する
  3. Document Baseが easybuggy の行を選択する
  4. Edit... ボタンを押す
  5. Edit Web Module ダイアログにて、Pathを/に変更する

起動

EasyBuggy

Serversビュー内から追加されたサーバーを選択し、同ビュー内のStart the server in debug modeボタンを押す。
その後、下記にアクセスする。

EasyBuggy Boot

Package ExplorerからEasybuggy4sbApplication.javaを選択し、EclipseのツールバーのDebug Easybuggy4sbApplicationボタンを押す。
その後、下記にアクセスする。

まとめ

おつかれさまでした。

トラブルシューティング

EasyBuggy / EasyBuggy Bootの起動に失敗する場合

一度 mvn verify コマンドを実行することで、直ることがあります。

コマンドを実行した結果、下記のようなエラーで失敗することもあります。
しかし、これを無視して起動すると、成功することもあります。

No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK?

関連記事