デバッグコンソール機能(printf)は残しておいて良いか?

デバッグコンソール機能についてです。
 例:printf("Hello the world!! ¥n");
特に、実行速度なりコンパイルサイズなどの制約がない場合、
最終リリースでデバッグコンソール機能(printf)は残しておいても問題ないものでしょうか。
以上、よろしくお願いいたします。

Parents
  • ご回答ありがとうございます。

    >製品次第でしょう。
    の意図は、特に害はないが、
    今後のソフトの保守をどうするかで決めれば良いとの事でしょうか。

    以上、よろしくお願いいたします。
Reply
  • ご回答ありがとうございます。

    >製品次第でしょう。
    の意図は、特に害はないが、
    今後のソフトの保守をどうするかで決めれば良いとの事でしょうか。

    以上、よろしくお願いいたします。
Children
  • あおぞらさん
    printfは是非とも残したいですよね、何かあった場合特に開発環境が手元にない場合
    コマンドでデバッグできるようにしておけば、その場で不都合が解析できたりします
    ただ秘密が盗まれたら困るような場合には無いほうが良いかもしれませんね、
    それで特定のパスワードでコマンドが有効になるようなことをしています、
    例え接続できてもパスワードが入力されていないと応答しないですから、
    だれでもコマンドで設定を変えられるというようなことを防げます、
    ただROMサイズに制限のあるような小さなものですとprintfというような比較的大きな
    ライブラリーは実装できない場合がございます。
  • > >製品次第でしょう。
    > の意図は、特に害はないが、
    > 今後のソフトの保守をどうするかで決めれば良いとの事でしょうか。

    問題が生じる場合もあればそうでない場合もあり一概に言えずケースバイケースということです。

    例1
    賞品の当たりを決定する遊戯機器に於いて、デバッグ情報に当たりを予見できる情報が含まれる場合
     →悪用される場合が予想され問題となりうる

    例2
    観測した自然現象の変化を記録するロガー
     →まず問題とならない

    その辺りの判断がつかないのであれば、デバッグ出力は禁止しておいた方が無難です。プログラムの組み方によってはデバッグ出力を禁止することでマイコンの動作に影響が及ぶことも考えられるので、リリース版を作成する前にデバッグ出力を禁止した状態での動作確認は十分に行うべきでしょう。
  • 投稿ありがとうございます。

    製品は、機器を計測してこのデータをSDカードに書込むようなものです。
    動作速度やROMサイズが課題となるようなものではありません。

    現在は、またデバッグが必要になるかもしれないし、
    とりあえず用が済んだらコメントアウトしておこうかなと思っています。
  • > とりあえず用が済んだらコメントアウトしておこうかなと思っています。

    
    #if DBGPRINT
    #define DbgPrint(fmt, ...) do {fprintf(stderr, fmt, __VA_ARGS__);} while (0)
    #else
    #define DbgPrint(fmt, ...)
    #endif
    

    とかやってデバグ出力を切り替えられるようするのは常套手段ですね。

  • 投稿ありがとうございます。

    下記のヘッダを書いて見ましたが、
     my_debug.h(8):E0520040:Expected an identifier
    となります。

    E1を使用したデバッグコンソール機能を使っておりますが、
    これは、E1を使用したデバッグコンソール機能(printf())特有で、
    VA_ARGSが使えないのでしょうか。
    または、文法間違っていますでしょうか。

    #ifndef MY_DEBUG_H
    #define MY_DEBUG_H

    #define DEBUG_BUILD // enable debug print.

    #ifdef DEBUG_BUILD
    # define DEBUG_PUTS(str) puts(str)
    # define DEBUG_PRINTF(fmt, ...) do {printf(fmt, __VA_ARGS__);} while (0)
    #else
    # define DEBUG_PUTS(str)
    # define DEBUG_PRINTF(fmt, ...)
    #endif

    #endif
  • ja-support.renesas.com/.../17796666

    ↑を参照されると良いと思いますが、言語の設定を変更すると思わぬ不具合が出る可能性もあるので慎重にされるべきでしょう。
  • ありがとうございます。

    C89からC99に変更しました。
    W0520223:Function "xxxx" declared implicitly が出るようになりました。
    厳格にチェックされるようになったのですね。