このエントリは、CloudStack Advent Calendarの12月17日分のエントリです。

さて、12/4のエントリでは、CloudStackをIntelliJ IDEAでビルドする方法を説明しました12/6のエントリでは、JenkinsでCloudStackのdebパッケージをビルドする方法を説明しました。今日はそのdebパッケージを使ってCloudStackを実際に構築したとして、その環境をIntelliJ IDEAからリモートデバッグをする方法を解説します。

Debuggee(CloudStack)の設定

CloudStackはJavaのプログラムですが、Javaは起動時のオプションで、リモートデバッグの受付を設定出来ます。Management Serverの場合はTomcatの設定ファイル(/etc/cloudstack/management/tomcat6.conf)、KVM Host Agentの場合は起動スクリプト(/etc/init.d/cloudstack-agent)内で起動オプションを設定変更できるので、例えば以下のように変更を加えると、8787番ポートでデバッガのアタッチを待ち受けるようになります。

sed -i 's/JAVA_OPTS="/JAVA_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,address=5005,server=y,suspend=n /g' /etc/cloudstack/management/tomcat6.conf
sed -i 's/$JSVC -cp/$JSVC -Xdebug -Xnoagent -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005 -cp/g' /etc/init.d/cloudstack-agent

なお、上記の例ではsuspendオプションにnを渡していますが、yを渡すと、デバッガがアタッチされるまで実行が抑止されます。このオプションは、起動してすぐ、デバッガをアタッチする間もなく実行されてしまう箇所のデバッグをするときに有効です。yを渡しておくと、デバッガがアタッチされるまで実行が抑止されることでその箇所のデバッグが可能になります。

Debugger(IntelliJ IDEA)の設定

“Run”メニューの”Edit configuration”メニューから、“Run/Debug Configuration”ウィンドウを開きます。

すると、デバッグ対象を左上の"+"ボタンから追加できるので、"Remote"を選択して追加し、NameとHost、Portを対象のサーバーにあわせて適宜編集してください。

image

これを対象のサーバー分だけ繰り返すと、Debugボタンを押したときにデバッグ対象を選択してリモートデバッグを行えるようになります。

image

当然、ソースコード中にブレークポイントを置いてコードの実行を一時停止させたり、

image

Intelli J IDEAの"Expression Evaluation"ウィンドウという、Visual Studioで言うところの"Immidiate Window"的な、入力した式を現在のスコープで評価するツールを使ったりすることも出来ます。

image

ちょっと短めですが、以上、CloudStackをIntelliJ IDEAでリモートデバッグするまでの手順の紹介でした。CloudStackは、比較的OSSとしてはドキュメントが充実している方ですが、それでも開発が非常にアクティブなこともあり、ドキュメント化されていない仕様や、周知が十分でない仕様変更が多くあります。CloudStackの開発にこれから取り組もうという方は勿論、CloudStackを導入するにあたって、仕様を深く理解しようとコードを追う人にとっても、この記事が一つの参考になれば幸いです。

Trackbacks : 7

Trackback URL for this entry
http://blog.sharplab.net/blog/2013/12/16/cloudstack%e9%96%8b%e7%99%ba%e3%81%93%e3%81%a8%e3%81%af%e3%81%98%e3%82%813%e8%a9%a6%e9%a8%93%e7%92%b0%e5%a2%83%e3%81%ae%e3%82%bb%e3%83%83%e3%83%88%e3%82%a2%e3%83%83%e3%83%97-cloudstack/trackback/

Listed below are links to weblogs that reference this entry

トラックバック from Commercial Gas Prices 14-07-17 18:39:00 UTC

Commercial Gas Prices…

CloudStack開発ことはじめ(3)試験環境のセットアップ -CloudStackをIntelliJ IDEAでリモートデバッグしてみよう- – SharpLab….

トラックバック from コーチ アウトレット〜財布カードケース〜 14-10-19 09:18:43 UTC

コーチ アウトレット〜財布カードケース〜…

CloudStack開発ことはじめ(3)試験環境のセットアップ -CloudStackをIntelliJ IDEAでリモートデバッグしてみよう- – SharpLab….

トラックバック from suunto スント 正規品 14-11-05 09:26:40 UTC

suunto スント 正規品…

CloudStack開発ことはじめ(3)試験環境のセットアップ -CloudStackをIntelliJ IDEAでリモートデバッグしてみよう- – SharpLab….

トラックバック from ヘルメット フルフェイスヘルメット 14-12-07 13:39:35 UTC

ヘルメット フルフェイスヘルメット…

CloudStack開発ことはじめ(3)試験環境のセットアップ -CloudStackをIntelliJ IDEAでリモートデバッグしてみよう- – SharpLab….

ピンバック from CloudStack開発ことはじめ (4)結合テスト –marvinでCloudStackの結合テストを自動化してみよう– - SharpLab. 15-06-13 09:56:19 UTC

[…] 以前、「CloudStack開発ことはじめ」と題して、CloudStackの開発環境をセットアップする手順として、IntelliJ IDEAでCloudStackをビルド、デバックしたり、JenkinsでCloudStackのパッケージをビルドする手順を紹介しました(1) (2) (3)。ビルド、デバッグ、パッケージングまできたら、次のテーマはテストでしょう、ということで、今回のエントリでは、Marvinを利用した、CloudStackの結合テストの自動化について解説を行います。 […]

トラックバック from global health insurance 15-07-01 15:46:19 UTC

global health insurance…

CloudStack開発ことはじめ(3)試験環境のセットアップ -CloudStackをIntelliJ IDEAでリモートデバッグしてみよう- – SharpLab….

トラックバック from www.flipsnack.com 16-11-04 05:20:59 UTC

http://www.flipsnack.com

CloudStack開発ことはじめ(3)試験環境のセットアップ –CloudStackをIntelliJ IDEAでリモートデバッグしてみよう– – SharpLab.