aclib #23 - デバッグ支援機能について

  • (by K, 2020.10.08)

(1) memo

  • 全般:
    • [1-1]オブジェクトをinit/openしていないうちに使おうとするとエラーになる。
    • [1-2]オブジェクトをdeinit/closeしないうちにそのメモリ範囲をほかの用途に使おうとするとエラーになる。
    • [1-3]init/openしていない領域に対して、deinit/closeするとエラーになる。
    • [1-4]自動deinitや自動closeが使える。
  • 簡易モニタにて:
    • [2-1]利用中のメモリ容量を確認できる。
    • [2-2]生きているオブジェクト一覧や生きているmalloc領域一覧も出せる。
    • [2-3]メモリリークも確認できる。
    • [2-4]オブジェクトの中身を表示できる。
  • クラス開発者向けのサービス(C言語なので厳密にはクラスではなく構造体だけど):
    • [3-1]アプリから渡されたオブジェクトポインタが有効なものかをチェックできる。
    • [3-2]アプリから渡されたメモリ域は問題なくアクセスできるのかどうかをチェックできる。

(2) C++との比較

  • [1-1]に対して: C++ならコンストラクタ・デストラクタがあるので、そもそもinitし忘れて使うということはめったに起こらない。
  • [1-4]に対して: RAIIを使えば自動deinitや自動close相当のことがもっとエレガントにできる。

(3) デバッガとの比較

  • [2-3]に対して: メモリリーク検出機能を持っているCRTもあるらしい。
  • [2-4]に対して: 優秀なデバッガはメモリ上のオブジェクトのメンバの値を自由に表示できるが、しかし適切な形式に整形して表示することができない。aclライブラリの場合は、表示はクラスライブラリ内のデバッグ機能を使って行うので、表示は整えられる。しかしクラスライブラリが対応していなければメモリダンプしか出せない。

こめんと欄


コメントお名前NameLink

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2020-10-08 (木) 22:56:28 (46d)