本日は、C言語/C++言語でのデバッグの際、役にたつprintfのマクロについて記載したいと思います。
仕事の都合上、Arduinoやラズパイなどをよく使うことがあるのですが、このような画面出力もしくは、UARTでの出力ができる環境でのデバッグにはマクロがかかせません。
これまでマクロのおかげでいくつものバグや不具合を発見してきました。
とっておきの一文
この一行を記載しておけば、プログラムがここの行数にきたときに、自動でこのコードが書かれているファイル名と、行数を出力してくれます。
つまり、このファイルのこの行前後を実行しましたという証拠ができます。
どこで不具合が出ているのか分からない時は、この一行を複数の至る所に配置してみると不具合の特定に役立ちます。
// ラズパイでのデバッグ
printf("%s:%d\n",__FILE__,__LINE__);
// Arduinoでのデバッグ
Serial.println("%s:%d",__FILE__,__LINE__);
よく使われるマクロ
コード | 出力内容 |
__FILE__ | コードが記載されているソース名を出力する。 |
__LINE__ | コードが記載されているソースの行数を出力する。 |
__DATE__ | ソースコードのコンパイル日時を出力する。 |
まとめ
画面出力で役に立つマクロを紹介しました。
不具合解析などに是非お使いください。