本プロジェクトは,診断・評価用の機能(メモリ観測・白板撮影・リーク再現)を**条件コンパイルシンボル(ビルドフラグ)**で出し分けている.配布版(Release)にはこれらをコードごと含めない方針である.本ドキュメントは,どのフラグが何を有効化し,どの構成で定義されるかをまとめる.
MEMMONITOR・WHITEBOARD)を自動で含める.LEAKY_REPRO)は既定では未定義とし,必要なときだけ手動で付与して対比計測に使う.TIASshot.sln が定義する構成は次の 2 つ(プラットフォームは x64 のみ).OpenCvSharp 等がネイティブ DLL に依存するため x64 でビルドする.
| 構成 | 用途 | 定義されるシンボル | 出力先 |
|---|---|---|---|
Debug\|x64 | 開発・検証 | DEBUG TRACE WHITEBOARD MEMMONITOR | TIASshot/bin/x64/Debug/ |
Release\|x64 | 配布 | TRACE | TIASshot/bin/x64/Release/ |
※
TIASshot.csprojにはDebug\|AnyCPU/Release\|AnyCPUの PropertyGroup も残っているが,.slnはx64のみをビルド対象としており,通常はこれらを使わない. ※TIASshot/bin/Debug-NoWB/というフォルダが残っている場合があるが,これはWHITEBOARDフラグ導入前の古い手動ビルドの残骸であり,現在のソリューションには対応する構成は存在しない.
| シンボル | 目的 | 定義される構成 | Release(配布)含有 | 出し分け対象(主なもの) |
|---|---|---|---|---|
MEMMONITOR | メモリ観測ウィンドウ+プレビュー計測 | Debug\|x64(自動) | ✗ | UI/MemoryMonitorForm,UI/PreviewProfiler,UI/TimedPictureBox,UI/Form1.MemMonitor(F9 トグル),Form1.ShowImage 等のプレビュー計測 |
WHITEBOARD | 白板撮影モード(照明均一性評価用) | Debug\|x64(自動) | ✗ | 白板撮影ボタン(Form1 の専用 partial),Cameras/IScam.ShotWhiteBoard 等 |
LEAKY_REPRO | メモリ修正(優先度2)前の挙動を再現するデモ用 | どの構成でも未定義(手動オプトイン) | ✗ | ColorCorrection/ColorCorrector.ConvertImage のリーク版分岐,UI/MemoryMonitorForm のモード表示 |
DEBUG | .NET 標準デバッグシンボル | Debug\|x64 | ✗ | 標準(一部の開発時分岐) |
TRACE | .NET 標準トレースシンボル | 全構成 | ○ | System.Diagnostics.Trace |
MemoryMonitorForm)を自動で開き,PrivateMemory / WorkingSet をライブ折れ線グラフ+CSV で記録する.bin/x64/Debug/MemMonitor_Results/)に出力する.ConvertImage の中間 Mat 未解放)の修正前の挙動を忠実に再現するためのデモ用フラグ.using による修正後実装が使われる.LEAKY_REPRO を定義してビルドすると,ConvertImage が中間 Mat を Dispose しないリーク版に切り替わり,観測ウィンドウのモード表示も「リーク再現(修正前)」になる.標準構成(Debug / Release)のビルド・テスト・実行コマンドは ENV_04_開発コマンド を参照する.Debug|x64 では WHITEBOARD と MEMMONITOR が自動で有効になり(メモリ観測ウィンドウが開き,白板撮影ボタンが表示される),Release|x64 ではいずれの診断フラグも含まれない.
LEAKY_REPRO はソリューション構成に含まれないため,一時的に手動で付与する.いずれかの方法で行い,計測後は元に戻すこと.
LEAKY_REPRO を追加してビルド.TIASshot.csproj の Debug|x64 の <DefineConstants> に一時的に ;LEAKY_REPRO を追記してビルド.WHITEBOARD(白板撮影の専用ビルド記号化)MEMMONITOR / LEAKY_REPRO(メモリ修正の効果検証ツール)