2

gcoviPhone プロジェクトでのセットアップに関するすべての問題を解決しましたが、現在は次のようになっています。

profiling:/Users:Cannot create directory

私が間違っているかもしれないことについて誰か提案がありますか?

私は元々、グーグルの「UsingCoverStory」で見つけることができるグーグルの指示に従ってgcovをセットアップしました

更新:さて、私がやろうとしていることを明確にさせてください。自動的にテストしようとしている iPhone アプリがあります。フレームワークを使用しUISpecて GUI を駆動しています。私が実際に知っておくべきことは、テストで実際にカバーしているコードの量です。私は本当に近いと思いますが、プロジェクトに合わせて環境/コンパイラ変数を適切に設定する方法を理解する必要があります。

ここに私がこれまでに行ったことの要約があります。最初にビルド ターゲットをコピーし、リンカー フラグと他のいくつかのオプションを規定どおりに指定しました。(これは、Google によって作成された AppleScript を使用して自動的に実行できます。手順とダウンロードは、Google で「UsingCoverStory」を検索すると見つかります) とにかく、これらの設定が正しく割り当てられていることを確認しました。構成をデバッグに設定し、これを 3.1.3 デバイスで実行しています。アプリを実行すると、アプリを終了するまで、デバッガーに特別なものは何も表示されません。その時点で、エラーが発生します。

profiling:/Users:Cannot create directory
profiling:/Users/forbushbl/Documents/TestApp/build/TestApp.build/Debug-iphoneos/TestApp copy.build/Objects-normal/armv6/ApplicationController.gcda:Skip

ファイルを書き出そGCOVうとしていると.gcda思いますが、どこに書き込むべきかを伝える方法がよくわかりません。上記のディレクトリは私のマシン上のファイルがある場所であるため、ファイルがプロジェクトフォルダーに保存されているGCOVディレクトリ構造を再現しようとすることをどこかで読みました。ただし、その構造は iPhone には存在せず、デバイスもその構造を作成できないため、これは問題です。.gcno.gcno

同じ問題を抱えている別の人を見つけたところ、環境変数を設定する必要があるとのことでした。iPhone SDK でコード カバレッジ分析用に gcov を設定するにはどうすればよいですか?

GCOVドキュメントには次のように記載されています。

たとえば、オブジェクト ファイル/user/build/foo.o が でビルドされた 場合、最終的な実行可能ファイルは、ターゲット システムでの実行時に-fprofile-arcsデータ ファイルを作成しようとします。/user/build/foo.gcda対応するディレクトリが存在せず、作成できない場合、これは失敗します。これは、たとえば、環境を「GCOV_PREFIX=/target/run」および「GCOV_PREFIX_STRIP=1」に設定することで解決できます。このような設定では、データ ファイルに名前が付けられます/target/run/build/foo.gcda

私の質問は、iPhone でこれらの環境変数を設定するにはどうすればよいですか? ビルド構成または実際のコード内でこれを行う必要がありますか?

4

2 に答える 2

1

プロジェクトのmain.mファイルでsetenvを使用して、これらの変数を設定する必要があります。

const char *prefix = "GCOV_PREFIX";
const char *prefixValue = [[NSHomeDirectory() stringByAppendingPathComponent:@"Documents"] cStringUsingEncoding:NSASCIIStringEncoding]; // This gets the filepath to the app's Documents directory
const char *prefixStrip = "GCOV_PREFIX_STRIP";
const char *prefixStripValue = "1";
setenv(prefix, prefixValue, 1); // This sets an environment variable which tells gcov where to put the .gcda files.
setenv(prefixStrip, prefixStripValue, 1); // This tells gcov to strip the default prefix, and use the filepath that we just declared. 

注:上記のコードが次の前にあることを確認してください。

NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
int retVal = UIApplicationMain(argc, argv, nil, nil);
[pool release];    
return retVal;
于 2011-02-28T09:28:17.773 に答える
0

これらのenv変数を実行可能設定で設定できるはずです。プロジェクトの「実行可能ファイル」ブランチを(ツリー/開​​示ビューで)開き、実行可能ファイルをダブルクリックします。引数ペインの下で、環境変数を設定できます。

于 2010-06-18T20:54:09.387 に答える