概要
pdbg は,printf debugger を意味し,デバッグ用の関数群を提供します.#define DEBUG の有無により,動作を変更します.※この関数群は,"pdbg", "pdbg_if", "pdbg_if_exit", "pdbg_if_stop_exit", "dbg", "ndbg", "pdbg_always", "pdbg_always_stop_exit" をグローバルで定義 (#define) するため,名前空間を汚染します.これは,コンパイル前に sstd/compileOption.hpp 中の,#define use_sstd_pdbg を制御することで抑制できます.
| プロトタイプ宣言 | 動作説明 |
|---|---|
| pdbg(...) | print ... . |
| pdbg_if(Boolean, ...) | If Boolean is true, print ... . |
| pdbg_if_exit(Boolean, ...) | If Boolean is true, print ... and exit. |
| pdbg_if_stop_exit(Boolean, ...) | If Boolean is true, print ... , stop and exit. |
| dbg(Code) | If "DEBUG" is "#define"d, run "Code". |
| ndbg(Code) | If "DEBUG" is not "#define"d, run "Code". |
使用例
#define DEBUG #include <sstd/sstd.hpp> int main(){ sstd::pdbg("abc\n"); printf("true: "); sstd::pdbg_if(true, "print txt"); printf("\n"); printf("false: "); sstd::pdbg_if(false, "not print txt"); printf("\n"); // printf("true: "); sstd::pdbg_if_exit(true, "exit"); printf("false: "); sstd::pdbg_if_exit(false, "not exit"); printf("\n"); // printf("true: "); sstd::pdbg_if_stop_exit(true, "exit"); printf("\n"); // printf("false: "); sstd::pdbg_if_stop_exit(false, "not exit"); printf("\n"); sstd::dbg(printf("run debug code.");); sstd::ndbg(printf("run ndebug code.");); printf("\n"); sstd::pdbg_always("%s\n", "always print message"); // sstd::pdbg_always_stop_exit("%s\n", "always print message, stop and exit."); printf("\n"); }
実行結果
$ ./exe.exe main(5): abc true: main(6): print txt false: false: run debug code. main(16): always print message
//#define DEBUG #include <sstd/sstd.hpp> int main(){ sstd::pdbg("abc\n"); printf("true: "); sstd::pdbg_if(true, "print txt"); printf("\n"); printf("false: "); sstd::pdbg_if(false, "not print txt"); printf("\n"); // printf("true: "); sstd::pdbg_if_exit(true, "exit"); printf("false: "); sstd::pdbg_if_exit(false, "not exit"); printf("\n"); // printf("true: "); sstd::pdbg_if_stop_exit(true, "exit"); printf("\n"); // printf("false: "); sstd::pdbg_if_stop_exit(false, "not exit"); printf("\n"); sstd::dbg(printf("run debug code.");); sstd::ndbg(printf("run ndebug code.");); printf("\n"); sstd::pdbg_always("%s\n", "always print message"); // sstd::pdbg_always_stop_exit("%s\n", "always print message, stop and exit."); printf("\n"); }
実行結果
$ ./exe.exe true: false: false: run ndebug code. main(16): always print message
実装
0 件のコメント:
コメントを投稿