テクニカル ドキュメント #14



Doc ID: 14
製品: DriverBuilder
Version:  --

VxWorks で Debug Monitor ユーティリティをどのように使用しますか?

VxWorks では、wddebug.out ユーティリティを使用してください。Windows、Solaris、Linux などの wddebug コマンド ライン ユーティリティの使用方法と似ています (テクニカル ドキュメント #13)。VxWorks には、GUI バージョンはありません。

以下の手順で行ってください:
  1. メモリに、プログラム wddebug.out をロードします。
  2. wddebug_main を呼びます。
  3. 以下の引数で、wddebug_main を呼びます:
    wddebug_main "on", "trace", "all"
    これで、Debug Monitor が有効になります。
  4. wddebug_main dump を呼びます。
ENTER を押下するまで、プログラムは連続してデバッグ メッセージをダンプします。(ENTER を押下するまで) シェル プロンプトは返ってこないので、ターゲットと動作するには新しいシェルを開始する必要があります。

wddebug.out のソース コードは: DriverBuilder/samples/wddebug/wddebug.c. にあります。

デバッグ ユーティリティを正しく使用するには、ソース コードをアプリケーションに追加 (もちろん、ソースコードの main() 関数の名前を変更); もしくはできれば、デバッグ ユーティリティを有効にするには、以下の2つの関数の定義をコードに追加し、main() 関数からその関数を呼びます:

    int debug_start()
    // Call this function after the call to
    // drvrInit(), in order to instruct the
    // kernel to start sending debug messages:

    {
        WD_DEBUG debug;
        HANDLE hWD = WD_Open();
        if(hWD==INVALID_HANDLE_VALUE)
            return -1;

        BZERO(debug);

        debug.dwCmd = DEBUG_SET_FILTER;
        debug.dwLevel = D_TRACE;
        debug.dwSection = (DWORD)S_ALL;

        WD_Debug(hWD, &debug);

        return 0;
    }

    int debug_dump()
    // Call this function at the end of main(),
    // after the system as booted and you get
    // your shell. This function causes the debug
    // messages that have been sent to be displayed
    // of in the debug log:

    {
        WD_DEBUG_DUMP debugDump;
        char buf[2048];
        HANDLE hWD = WD_Open();

        if(hWD==INVALID_HANDLE_VALUE)
            return -1;

        BZERO(debugDump);
        debugDump.pcBuffer = buf;
        debugDump.dwSize = sizeof (buf);

        WD_DebugDump(hWD, &debugDump);

        printf("%s", debugDump.pcBuffer);

        return 0;
    }