AWS Cloud9でPythonをデバッグする


このノートはプログラミング初心者の方向けに
AWS Cloud9のデバッグモードでPythonを実行する方法について
簡単な説明を記載しています。
既にCloud9を利用していて、Pythonが実行できる方が対象となります。


デバッグとは?

プログラムのバグ(不具合)を見つけたり、取り除いたりする作業のこと。
デバッグ作業を手伝ってくれるプログラムのことをデバッガーといいます。

以下は、Cloud9 公式トップページの説明です

~ Cloud9 公式トップページの説明(最初のとこだけ抜粋) ~
AWS Cloud9 は、ブラウザのみでコードを記述、実行、デバッグできるクラウドベースの統合開発環境 (IDE) です。
これには、コードエディタ、デバッガー、ターミナルが含まれています。

Cloud9にはコーディング、デバッグ、実行を行うための
色んな支援ツールが最初から含まれています。凄いですね!!


デバッガーの機能とは?

~ デバッガーの機能について wikipedia から引用 ~
・ブレークポイント
ソースコード中に置く、実行の流れを止める機能。ブレークポイントを置いてから該当のソフトウェアを実行した際、デバッガはそこで処理を止める。これにより、任意の位置での実行状況(変数の値やメモリの内容)を調べることができるようになる。
・ステップ実行
処理を止めた際に、一ステップずつソースコードを実行する。これにより、ソースコードをステップごとに追いかけながら実行することが出来、ロジックの問題点を探ることが出来る。
・ステップアウト
構造型言語、オブジェクト指向言語などで、関数、またはメソッドをひとつ飛ばして実行する。これにより、ステップ実行した際に処理を簡略化できる。
・変数確認
指定した変数の中身を出力する。これにより、変数にどんな値が入っており、それが正しいか、誤っているかを確認できる。

ざっくり説明するとデバッガーを利用すると以下のようなことができます
・プログラム(ソースコード)の任意の場所で処理を止めることができる
・止まってる状態で各変数の値を確認することができる
・処理を1行ずつ実行できる
・1行ずつ処理を実行する際に、関数をとばして実行できる

デバッガーを利用したことない方はピンとこないかもしれませんが、
実際に触ってみることで、理解が深まると思うので
是非、自分のCloud9環境にて試してみてください。



ここからは実際にCloud9を使っていきます


※ その前に動かす時の注意事項

・Pythonのバージョンを指定する

実行するPythonのバージョンを指定しておく。
Cloud9の画面上ツールバー「AWS Cloud9」→「Preference」をクリック
「ProjectSetting」の「Python Support」の「Python Version」で指定。


 ・動かしたくない処理は無効化する

デバッグモードで実行した場合も、実際にプログラムは動作しています。
APIで注文入れてるなど実際に処理されてはまずい箇所はコメントアウト等で必ず無効化してください。


・同じ環境で既に動かしているプログラムに影響があるかも

デバッグモードはそこそこマシンパワーを必要とするため同じサーバー(AWS)で既にプログラムを走らせていた場合、処理が遅延したり、最悪は止まったりする可能性があります。
といっても、よほど重い処理をデバッグしなければ問題ないと思いますが、事前に止めておく、またはすぐ復旧できるよう準備しておくことをおすすめします!
※といいながら、私はこのnote作成時は裏で2つプログラムを走らせてましたが、影響ありませんでした。。。止めるの面倒だったので。。。(;・∀・)


ここからは実際にCloud9を使っていきます。


Cloud9でPythonをデバッグする

下記の流れでデバッグ機能を使ってみます。
ファイルを作って、通常モードとデバッグモードで実行します。

・フォルダとPythonプログラムを新規作成する

・Pythonを通常モード実行する

・Pythonをデバッグモード実行する
  デバッガーの基本機能を利用してみる
   ブレークポイント
   ステップ実行
   ステップアウト
   変数確認


【Cloud9】 フォルダとPythonプログラムを新規作成する

他のプログラムを操作ミスで消さないように勉強用フォルダを作成し、フォルダの中に今回実行するPythonプログラムを作成します。

1."study"フォルダを作成(名前は任意です)
左の"Environment"タブで右クリック→"New Folder"をクリック

2."debug_hello_world.py"を作成(名前は任意です)
作成した"study"フォルダを右クリック→"New File"をクリック



【Cloud9】 Pythonを通常モード実行する

さきほど作成した"debug_hello_world.py"ファイルに以下を記述します。

print('Hello World')

1.ファイルを編集、保存する
ファイルを編集→ファイルを保存(Ctrl+Sボタン押下)

2.Pythonを通常モード実行する
AWS Cloud9のツールバーの"Run"をクリック

画面下のウインドウに新しいタブが開き
「Hello World」が表示されていれば通常モードで実行できています。



【Cloud9】 Pythonをデバッグモード実行する

このままでもデバッグ実行は可能ですが、
わかりやすくするため"debug_hello_world.py"を下記のように修正します。
(出力結果は同じ)

str1 = 'Hello'
str2 = 'World'
str3 = str1 + ' ' + str2
print(str3)

修正、保存が終わったら、いよいよデバッグモード実行です。


1.デバッガーウインドウを開く
画面右の「Dubugger」をクリック
※デバッガーを利用するためのウインドウを先に開いておきます

2.デバッグモードをONにする
Pythonを通常に実行した際に新しく開いたタブの虫マークをクリック
※このボタンでデバッグモードのON,OFFを切り替えます

3.ブレークポイントを設置する
ソースコード2行目の左枠の部分をクリック
正しくクリックできると赤い丸がつき、デバッガーウインドウの「BreakPoint」に表示されます。
※赤い丸のことをブレークポイントといいます

4.Pythonをデバッグ実行する
デバッグモードをONにした状態で、
AWS Cloud9のツールバーの"Run"をクリック(通常実行と同様)

下の図のように設置したブレークポイントの行に色がつき、
デバッガーウインドウの上のボタンが有効になっていれば
デバッグ実行して一時停止できている状態です!!!
(デバッガーのブレークポイント機能)

停止している状態で、デバッガーウインドウの「Local Variables」を見ると、
既に1行目が処理されているため、「str1」変数に'Helle'の文字が設定されています!
(デバッガーの変数確認機能)
※ブレークポイントは設置した行の処理直前で機能します。
今回の場合は2行目実行前で止まっているため、まだ処理されていない「str2」変数は未定義の状態となっています。


では、一時停止することができたら、2行目から1行ずつ処理をすすめてみましょう。
デバッガーウインドウ上部の「StepOver」ボタンを1回クリックしてください。(デバッガーのステップ実行機能)
※一気に処理を実行する場合は、「StepOver」ボタンの一つ左の「▶」ボタンをクリックします

色がついてる行が1行進んで
2行目の処理で定義された「str2」変数が「Local Variables」に表示されています。

「StepOver」ボタンをクリックし続けて、処理を最後まで進めてみましょう。

最後まで進んでも終了時の状態が保たれていて、
「str1」~「str3」の変数および変数の値が確認できるみたいです。
デバッガーウインドウ上の処理を進めるボタンはクリックできない状態となります。

また、デバッガーがログ出力しているので若干変わっていますが、
プログラム自身の出力内容である「Hello World」が画面下のタブに表示されいます。


5.デバッグ起動を終了する
デバッグモードを終了するには画面下のタブにある「Stop」ボタンをクリックします。


以上で終了です!!


おわりに

Cloud9のデバッガーやコードエディタには
便利な機能は沢山あるようなので
色々触ってみて自分の使いやすい機能を探してみてください!


この記事が気に入ったらサポートをしてみませんか?