2016-03-29 15 views
3

概要: "memory history" コマンド、と私はそれをどのように正確に何を使うのですされ「メモリ履歴」コマンドとは何ですか?

AddressSanitizer debugger support is active. Memory error breakpoint has been installed and you can now use it in the 'memory history' command.

:私はメッセージを得ましたか。

詳細:

  • 私がクラッシュになったメモリの警告を、持っていたコードのビットを持っていました。
  • 私は「アドレス消毒を有効にする」「編集スキーム」>「ファイル名を指定して実行」>を行くことによってアドレス消毒剤になりました。
  • それをオンにして再度、コードの同じビットを実行すると、クラッシュはもう発生しませんでしたが、メッセージが表示されました。
  • は は

    それが何を意味し

、そして正確にメモリhistoryコマンドは何ですか?どうやって使うの?私は検索しましたが、私の質問に答えるものは何も見つかりませんでした。

+0

引用されたテキストが十分であろう場所の画像が検索_and_の質問ではありませんので、自己完結型でなければならない画像を使用しないでください。イメージ_non-essential_補足情報を使用する場合は、サードパーティのホスティングサイトを使用しないでください。 – dandan78

+0

これは、ありがとうございます。 – crentagon

答えて

5

は、住所の下で実行中の消毒剤を使用すると、オブジェクトが割り当てられたかを確認することができます。 memory historyコマンドは、ポインタ/アドレスが必要で、それはそのオブジェクトが割り当てられた方法(配分の歴史的なスタックトレース)が表示されます:

(lldb) po self 
<MasterViewController: 0x61800000e080> 

(lldb) memory history 0x61800000e080 
    thread ... name = 'Memory allocated at' 
    frame #0: 0x00000001051bba97 libclang_rt.asan_iossim_dynamic.dylib`wrap_calloc + 199 
    frame #1: 0x00000001064362fd libobjc.A.dylib`class_createInstance + 84 
    frame #2: 0x0000000106440dc7 libobjc.A.dylib`_objc_rootAlloc + 41 
    frame #3: 0x00000001072d6d25 UIKit`-[UIClassSwapper initWithCoder:] + 175 
    frame #4: 0x00000001074c731b UIKit`UINibDecoderDecodeObjectForValue + 683 
    ... 

それも、それはまた、割り当て解除のバックトレースを示し、既に割り当て解除オブジェクトを、上の作品!すでに解放されているオブジェクトに誤ってアクセスしている場合は非常に便利です。

関連する問題