http://alxsrg.com/?p=180 http://root42.blogspot.ru/2011/02/valgrind-checking-of-ios-programs.htmlおよびhttp://landonf.bikemonkey.org/を参照してください。 code/iphone/iPhone_Simulator_Valgrind.20081224.html .
いくつかの状況で試しましたが、すべて失敗しました。
私が試すのは次のとおりです。
- マウンテン ライオン + xcode 4.6/4.6 + 手動でコンパイルされた valgrind + 古いバージョンの xcode から抽出された SDK5.1。
- vmware の lion(10.7.5) ゲスト OS (ホストはマウンテン ライオン) + xcode4.3.2/4.5.2 + SDK5.1/SDK5.0
- ライオン (10.7) + xcode4.2.1 + SDK5.0
execl は null 命令のスタック (0x00000000) で失敗します。
コマンドラインでvalgrindを使用しようとしましたが、うまくいきました。
ps、コードはシミュレーターで valgrind を生成します。
#define VALGRIND "/opt/local/bin/valgrind"
int main(int argc, char *argv[]) {
#ifdef VALGRIND_REXEC
/* Using the valgrind build config, rexec ourself
* in valgrind */
if (argc < 2 || (argc >= 2 && strcmp(argv[1], "-valgrind") != 0)) {
execl(VALGRIND, VALGRIND, "--leak-check=full", argv[0], "-valgrind",
NULL);
}
#endif
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
int retVal = UIApplicationMain(argc, argv, nil, @"PeepsAppDelegate");
[pool release];
return retVal;
}