5

iPhone プロジェクトで gcov を使用しようとしており、ここに記載されている Apple の指示に従いましたが、機能しません。

プロジェクトをビルドして構成すると、オブジェクト ファイルごとに .gcda ファイルが作成されます。ただし、実行された行は .gcda ファイルに記録されません。(CoverStory は、すべてのカバレッジが 0% であることを示しています)

次のように、テンプレートプロジェクトに単純なクラスを追加しました。

@interface SomeClass : NSObject
- (void)func1:(BOOL)flag;
@end

@implementation SomeClass
- (void)func1:(BOOL)flag {
  if (flag) {
    NSLog(@"flag is YES");
  }
  else {
    NSLog(@"flag is NO");  
  }
}
@end

このクラスを割り当てて、application:didFinishLaunchingWithOptions で func1 を呼び出しました。

OSX 10.6.4、iPhone SDK 4.0、および Xcode 3.2.3 を使用しています。さらに構成が必要ですか? ガイドしてください。

更新 2010/7/15:

@tonclon から提供されたリンクでこれらのヒントを試しましたが、まだ機能しませんでした。次の説明では、私が試したものです。

  1. GCC 4.0 でコンパイルされた Cocoa アプリケーション 「Cocoa」アプリケーションのプロジェクト設定で、

    • GCC_INSTRUMENT_PROGRAM_FLOW_ARCS を YES に設定します
    • GCC_GENERATE_TEST_COVERAGE_FILES を YES に設定します
    • その他のリンカー フラグを -lgcov に設定します。
    • C/C++ コンパイラのバージョンを 4.0 に設定します。

    うまくいきました.gcdaファイルは、期待どおりのカバレッジ情報で生成されました. ただし、SDK 4.0 を使用した iPhone プロジェクトでは、gcc 4.0 は SDK 4.0 の一部の構文 (ブロックなど) をコンパイルできないため、同じ構成を使用できません。

  2. google-tool-box でカスタム gcov ライブラリを使用する Other Linker Flag に -lgcov を設定する代わりに、 google-toolbox-for-mac に含まれるカスタム gcov ライブラリを試しましたが、生成された .gcda ファイルのカバレッジは 0% です。(同じ結果)

次に何をすべきか教えてください。任意の提案をいただければ幸いです。

4

1 に答える 1

0

いくつかのこと:

  1. プレフィックスヘッダーをオフにする
  2. 「正しく」終了するようにしてください

こちらのgcovページ(http://code.google.com/p/google-toolbox-for-mac/w/list)をチェックして、役立つかどうかを確認してください。私はgcovをXcode3.2.5とiOS4.2で動作させています。

于 2011-01-04T04:37:09.403 に答える