Atmel StudioでArduinoのスケッチをデバッグして見る
〔Arduino M0 Proの使い方に戻る〕
前ページでも書いたのですが、
コンパイルしたものをArduino M0 Pro(Zero Pro)に上手く書き込んで
動作させる事が出来ませんでしたが、
デバッグは動作する様です。その方法を記述して置きます。
@ デバッグ用スケッチを準備します、下記スケッチでテストします。
int num ;
void setup() {
pinMode(13, OUTPUT);
num = 0 ;
}
void loop() {
int a ;
num++ ;
digitalWrite(13, HIGH); // turn the LED on (HIGH is the voltage level)
delay(200); // wait for a 200ms
digitalWrite(13, LOW); // turn the LED off by making the voltage LOW
a = num ;
delay(200); // wait for a 200ms
}
A Arduinoボードは"Progrmming port"に接続をして置きましょう。
前回のコンパイル記述ページを参照し、上スケッチで[Build Solution]を実行させます。
実行前に、"Debug"で有る事を確認して置きます。
コンパイルが正常終了したら一旦[保存]しましょう。
B ”Atmel Studio”メニューバーの
[File]→[Close Solution]を順番に
クリックし、一旦終了させます。
左の画面が表示された場合は[Yes]を
クリックしましょう。
C ”Atmel Studio”メニューバーの[File]→[Open]→[Open Object File For Debuggimg]を順番に
クリックします。
赤丸矢印の部分をクリックすると、エクスプローラのファイル選択画面が表示されます、
その画面を操作して"Sketch1.elf"ファイルを選びます。
"[6.2]フォルダ" → "[Sketch1]フォルダ" → "[Sketch1]フォルダ" →
"[Debug]フォルダ" → "Sketch1.elf ファイル"を順番に開きます。
開いたら[Next]ボタンをクリックします。
「Device Family」で"SAM D,32-bit"を選択して、
表示される一覧から"ATSAMD21G18A"を選び[Finish]ボタンをクリックします。
・・・・・しばらくお待ちください・・・・・
D 左図、"Sketch1.cpp"をダブルクリックすればスケッチが
表示されます。
E ”Atmel Studio”の右上ツールバーを見て下さい。
[No Tool]とアイコンが表示されていると思います。
[No Tool]アイコンをクリックします、
下記画面が表示されるでしょう。
[Tool]タブにある"Selected debugger/programmer"の項で"EDBG"を選びます。
(もちろんArduinoが接続されていないとだめですよ、念の為に)
選んだら、「Skech1.cpp」に戻りましょう。
デバッグ準備完了、レッツトライ!デバッグ d(⌒ー⌒)
《Challeng Debug》
@ の横▲アイコン(又はF5キー)でデバッグ開始です。
上記のEを操作していなかった場合は、この開始の時に上記画面が
表示されるので"Debug Tool"の設定を行います。
A の■アイコン(又はCtrl+Shift+F5キー)でデバッグ終了です。
B [Break All]ボタン(又はCtrl+F5キー):デバッグ動作を一時停止させます。
C [Continue]ボタン(又はF5キー):一時停止したデバッグを再開させます。
D [Step Into]ボタン(又はF11キー):プログラムを1行ずつ実行させます。
E [Step Over]ボタン(又はF10キー):関数の行は飛ばして次の行で停止。(関数の中は実行されます)
F [Step Out]ボタン(又はShift+F11キー):実行中の関数中で有ればそれ以降は飛ばして関数から
抜け出て関数行の次の行で停止します。
G [Run To Cursor]ボタン(又はCtrl+F10キー):カーソルの有る行まで実行させます。
H [Reset]ボタン(又はShift+F5キー):デバッグを最初から実行(リセット)させます。
実行させると、この様にデバッグを行う為のウインドウ画面が表示されます。
この画面はデバッグを一時中断させた所で、delay関数の中で停止した模様です。
《ブレークポイントについて》
ブレークポイントとは、プログラムが実行され指定
ポイントで一時停止します、
そこで変数の内容等を確認する事が出来ます。
ブレークポイントを設置したい行の矢印部分を
クリックします。
再度クリックすれば解除されます。
デバッグを実行させれば左図の様に表示され、
プログラムは一時停止します。
この様に表示された場合はブレークポイントが設置できない場合です。
プログラムソースに行は有るが、意味のない行としてコンパイラがコードを
生成していないのかも? (な〜あぜぇ〜)
トレースポイント
上図、矢印の様にトレースポイントを設置したい行でマウスの右ボタンをクリックします。
表示されるサブメニュを辿り「Insert Tracepoint」まで順に操作クリックします。
矢印の部分を書き換えます、”num = {num} ”と変更して[OK]ボタンをクリックします。
とこの様に表示されるでしょう
デバッグを実行させ、右下のウインドウで[Output]タブをクリックします、
この様に[Output]ウインドウ画面に、
トレースポイント設置行が実行される度にメッセージが表示されます。
(・・・・んん、同じ文字が3回ずつ表示されているのが解せない!)
《変数内容の確認と設定》
デバッグが一時停止したら、
左図なら"num"変数にマウスカーソルを移動させれば、
左図の様に変数内容が表示されます。
"num++"は実行されていないので、num=0の状態ですね、
再開させれば、再びこの行で停止し、num=1となるはずですね。
[num:0x00000000]の部分をクリックして値を変更し[RETURN]キーを押せば変数内容も変更可能です。
Watchウインドウで変数の値を見る場合
このメガネアイコン[QuickWatch]を
クリックします。
左画面が表示されます。
図の「Expression」の場所に表示させたい
変数名を入力、例は"num"です。
次に[Add Watch]ボタンをクリックします。
下図の様にウオッチウインドウに変数と値が
追加されています。
「Value」の部分をクリックすれば値の変更も
可能です。
《シリアルモニター》
赤丸印のモニターアイコンをクリックすればモニターが表示されます。
ArduinoIDEのシリアルモニターと同様です。
《その他》
※ このデバッグ操作でArduinoへ書き込まれたスケッチは正常動作するのですよねぇ。
何処が異なるのでしょう?
※ デバッグ操作でバグが判明してもスケッチの編集コンパイルを行うには、
コンパイル操作に切り替えて変更コンパイルして、又、デバッグ操作に切り替えるなんて事を
行わないとダメっぽいなのですがぁ....ちょっとぉ、めんどいよねぇ。
※ なんかぁ、デバッグのステップ動作がぁ、スケッチの記述通りに動いていない様な気がぁ...
なんかぁ、スケッチ通りにコンパイルしてんのぉ、ブレークポイント設置出来ない所が有るなんてぇ
※ もお、"Arduino.ORG"さん、ちゃんとぉ"Atmel"さんと製品仕様等の摺り合わせお願い!!。
あれれぇ、"Arduino Studio"?なに!、"Arduino IDE"から切り替える気かしら(2015.06.13)
[前ページ:”Arduinoに書込んでみる”へ]
【きむ茶工房ガレージハウス】
Copyright (C) 2006-2015 Shigehiro Kimura All Rights Reserved.