ステータス変化を追う時のデバッグ手法の1つを紹介します。 以下言語はC++です。
enum { kStatusInitial, kStatusDownloading, kStatusDone, ... }; int m_status;
上記のようなステータスを取る変数があり、ステータスの種類が大量にあり、 それを変更する箇所も大量にある場合、その遷移の履歴をデバッグ表示すると、 ステータス遷移が視覚化され、状況を把握しやすくなります。
m_status = kStatusDownloading;
このような文を全て以下のように書き換えます。
setStatus( kStatusDownloading );
さらに以下のような実装を追加します。
void setStatus( int status ){ m_status = status; m_v_status.push_back( status ); } std::vector<int> m_v_status; void dumpStatus( void ){ std::vector<int>::iterator it; for( it = m_v_status.begin(); it != m_v_status.end(); ++it ){ printf( "status[%d]\n", (*it) ); } m_v_status.clear(); }
変化を確認したいところで、dumpStatus()を呼び出します。