1

4.3.2 でリークが検出された場合、リークが発生しているコード行を表示する方法はありますか? ドキュメントには次のように書かれています:

リークしているメモリを特定するには . . .

  1. リーク楽器を開きます。
  2. [Choose Target] ポップアップ メニューからアプリを選択します。
  3. 録音ボタンをクリックします。
  4. アプリを実行してコードを実行し、リークが表示されたら [停止] ボタンをクリックします。
  5. 詳細ペインで特定されたリーク オブジェクトをクリックします。
  6. [Extended Detail] ペイン内で、コードの命令をダブルクリックします。
  7. 詳細ペインの Xcode アイコンをクリックして、そのコードを Xcode で開きます。

Extended Detail の下にあるオブジェクトをダブルクリックしても、コードが開かず、次のようなウィンドウが開きます。+0x30 testq %rax, %rax

4

1 に答える 1

3

拡張詳細ビューでコールスタックの関数をダブルクリックしたとき、その関数はあなたが書いた関数でしたか? Cocoa フレームワークのメソッドなど、作成していない関数をダブルクリックすると、質問に記載されているようなアセンブリ言語の命令が表示されます。コードを表示するには、Instruments 用に記述した関数をダブルクリックする必要があります。

Instruments のコール ツリー ビューを使用すると、メモリ リークが発生しているコードの領域を簡単に見つけることができます。ジャンプ バーから [呼び出しツリー] を選択します。ウィンドウの左側には、一連のチェックボックスがある Call Tree セクションがあります。[Invert Call Tree] チェックボックスと [Hide System Libraries] チェックボックスを選択すると、呼び出しツリーでコードを見つけやすくなります。コール ツリーで関数の 1 つをダブルクリックしてソース ビューを開きます。ソース ビューには、リークしたメモリを割り当てたコード行が表示されます。

于 2012-08-27T18:24:06.263 に答える