デバッガ用ソフトウェアパーツとしてソースブレーク・標準出力―[PUTCH]が用意しています。
[ソースブレークとは?] | ||||||||||||
Cソースに直接ブレーク文「SBREAK()」を記述し、実行時その記述文に到達した場合ブレークする。(BASICでの「STOP」文と同じです。) この方式のソフトブレークを「ソースブレーク」と称することにしました。 なぜソースブレーク方式にしたかの理由は、この方式で無いソフトブレークを実現させるには、1回のブレークと実行の前後に2〜3回の命令書き換えが必要になります。(原理説明は省略します。) プログラムエリアが「RAM」の場合は問題がないのですが、フラッシュROMの場合は問題が山積みになります。 書き込み回数の制限、書き込みがブロック単位(1〜64Kバイト)、書き込みスピード、等々。 「H-debugger」は、この問題を解決する方法として、ブレーク文をデバッガでストア/リストアするのではなく、必要個所に最初からブレーク文を記述しておき、そのブレーク文を有効(停止)/無効(通過)できたら便利ではないかと思いました。 この思い込みにより「ソースブレーク」機能を追加しました。 概略操作を説明をします。 【注意事項】 ・Hew(ルネサスC)SH-2の場合、DEFバージョン4.70Aより、「nop()」記述の出来ない古いコンパイラバージョンをお使いの場合、ソフトパーツを使用することができません。 ・RAMエリアの場合は、ソフトブレーク(8ポイント)を用意しました。 詳細はこちらを御覧下さい。 |
||||||||||||
|
||||||||||||
[Cソース記述例] | ||||||||||||
"main.c" #define DEBUG /* ソフトウェアパーツが使用可能になります。*/ #include "GnuDebugH8.h" /* GNU/gcc H8シリーズの場合*/ main() { while(1) { SBREAK(); /* <―― ソースブレーク文です。*/ } } 「*.h」は、C言語/CPU別に用意してあります。 |
||||||||||||
|
||||||||||||
[VIEW表示例] | ||||||||||||
|
||||||||||||
操作説明 | ||||||||||||
1)青緑網掛け上でダブルクリックしますと通過/停止の切り換えが出来ます。 | ||||||||||||
|
||||||||||||
[ソースブレーク検索窓] | ||||||||||||
操作説明 | ||||||||||||
|
||||||||||||
|
||||||||||||
[ソースブレークの制限事項] | ||||||||||||
|
[標準出力-[PUTCH]とは?] | |||||||||||
Cソース行に標準出力文「PUTCH(char a)」を直接ソース行に記述することにより、 ローカル変数等のデバッガ情報表示をPUTCH窓に表示させることができます。 |
|||||||||||
|
|||||||||||
[Cソース記述例] | |||||||||||
"main.c" #define DEBUG /* ソフトウェアパーツが使用可能になります。*/ #include "GnuDebugH8.h" /* GNU/gcc H8シリーズの場合*/ //********************************************************** // main() //********************************************************** main() { while(1) { sprintf("H−debugger AH6000"); /* <−表示文例です。*/ } } //********************************************************** // sprintf() デバック用(文字列表示) //********************************************************** void sprintf(char *ptr) { while(*ptr != 0) { _putch(*ptr++);} } //********************************************************** // _putch デバック用(1キャラコンソール出力) //********************************************************** void _putch(char a) { register char b asm("r0"); b = a; PUTCH(b); } ※「*.h」は、C言語/CPU別に用意してあります。 |
|||||||||||
|
|||||||||||
[PUTCH窓表示例] | |||||||||||
操作説明 | |||||||||||
|
|||||||||||
|
|||||||||||
[制限事項] | |||||||||||
|