2

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 .

いくつかの状況で試しましたが、すべて失敗しました。

私が試すのは次のとおりです。

  1. マウンテン ライオン + xcode 4.6/4.6 + 手動でコンパイルされた valgrind + 古いバージョンの xcode から抽出された SDK5.1。
  2. vmware の lion(10.7.5) ゲスト OS (ホストはマウンテン ライオン) + xcode4.3.2/4.5.2 + SDK5.1/SDK5.0
  3. ライオン (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;
}
4

1 に答える 1

0

私はこれを機能させましたが、LLVM によって発行された SSE4 命令の一部がその時点で valgrind のエミュレーターでサポートされていなかったため、Valgrind からクラッドをハックする必要がありました。あなたがまだ興味を持っているなら、私はまだこのバージョンをどこかに持っていると思います. また、オーディオ スレッドがタイムアウトし (Valgrind はそれだけ遅い)、シミュレーターが終了するため、すべてのオーディオまたはビデオ コードを無効にする必要があります。

于 2014-02-19T19:27:55.257 に答える