![]() ![]() ![]()
|
SophiaFramework 2.2 |
SophiaFramework には、デバッグを支援するための以下のマクロを用意しています。 これらのマクロは、 BREW エミュレータ用のビルドを行った場合のみ有効になり、 実機用のビルドでは無効になります。
TRACE マクロは、 BREW エミュレータ上のビルドでは BREW API 関数である DBGPRINTF に #define され、 デバッグ出力を行います。 実機用のビルドでは、空に #define されますので、 デバッグ出力を行いません。
たとえば、次の例では、HelloWorld::OnAppStart() 関数が呼び出されたことを、BREW エミュレータの出力ウィンドウに出力しています。
Void HelloWorld::OnAppStart()
{
TRACE("HelloWorld::OnAppStart() called.");
...
}
ASSERT マクロは、1 つの Bool 引数を取ります。 その引数が偽であった場合、その ASSERT マクロが存在する ファイル名と行番号を出力します。
このマクロは「必ず満たされなければならない条件」が満たされていることを、 開発中に検証することを目的として使用されます。 たとえば、次のコードでは、 関数に渡された引数は絶対に NULL であってはならないことを 開発段階で検証するために使用しています。
SIntN CountDigit(ConstWCharPtr pwch)
{
ASSERT(pwch != NULL);
SIntN count = 0;
while (*pch != 0) {
if ('0' <= *pwch && *pwch <= '9') {
count++;
}
}
return count;
}
もし、この関数に NULL が渡された場合、 次のようなメッセージが BREW エミュレータの出力ウィンドウに表示されます。
ASSERT failed : line 315, file 'Hello.cpp'
VERIFY マクロは、BREW エミュレータ用のビルドでは ASSERT マクロとまったく同じ振る舞いをします。 実機用のビルドでは、Bool 引数を評価しますが、 その結果が FALSE であっても、デバッグ出力を行いません。
このマクロは、関数呼び出しの戻り値を検査するときによく使われます。 関数呼び出しの戻り値を検査するために ASSERT マクロを使用した場合、 実機用ビルドでは関数呼び出しそのものが削除されるため、 エミュレータ用のプログラムと実機用のプログラムの動作が異なってしまいます。 一方、VERIFY マクロを使えば、マクロの引数はエミュレータでも実機でも必ず評価されますので、 必ず関数呼び出しが発生することになります。
たとえば次のコードでは、配列リストの容量を確保できたかをデバッグ時に検証し、 確保できなかった場合は出力ウィンドウにメッセージを表示しています。 実機用のビルドでは SetRoom() 関数は呼び出されますが、 その結果が FALSE を返したとしても、何も行いません。
Void ReadIntFromFile(SIntN count)
{
SFUArrayList ar;
VERIFY(ar.SetRoom(count));
...
}
| Copyright(C) 2003-2004 Sophia Cradle Inc., All Rights Reserved. |
![]() ![]() ![]()
|