答えてズンズン!:メモリーリークを調べてみよう

サルでき.jp > 11.サルにもできるiPhoneアプリの作り方(旧アメブロ記事) > 答えてズンズン!:メモリーリークを調べてみよう

2010/02/18 09:00 投稿先 11.サルにもできるiPhoneアプリの作り方(旧アメブロ記事) 投稿者 カワサキ タカシ

ってきましたよ~。

ピグにまでおでかけしていた答えてズンズンのコーナーでしたが、
無事iPhoneアプリ開発に戻ってくることができました。
iPhoneアプリ系の質問の方が答えるのが難しいという台所事情は置いておいて。

ということで、今回のお題はiPhoneアプリ開発用の便利ツールのお話です。

さっそく行ってみましょう!
答えて~ズン!ズン!

iPhoneクソアプリ開発1課長さんからのご質問】


clang

いつも拝見させていただいております。
昨年末から技術無し知識無し、
macもプログラムも初めての状態でやってきた
iPhoneアプリ開発ですが、

もう限界です。

メモリーリークを調べる「clang」というソフトについて、
導入方法から「サル」いや「バカ」でもわかるように
解説いただけませんでしょうか。
お忙しいとは存じますが、お暇な時にでも、
何とぞ宜しくお願い申し上げます。


ぶっちゃけすぎ!
ぶっちゃけすぎですよ~iPhoneクソアプリ開発1課長さん!
(略してクソアプリ課長さん!、っていうか「クソアプリ」Google検索1位て(^^; )

「ペカペカ占い」と「3ケタンプラス」がちゃんと動いてるじゃないですか!
それだけで私より3歩以上リード。ご安心下さい。ご安心できませんか。

とりあえずメモリーリークって何よ?という方のために簡単な解説を。

メモリーリーク (Memory leak)とは、プログラミングにおけるバグの一種。プログラムが確保したメモリの一部、または全部を解放するのを忘れ、確保したままになってしまうことを言う。プログラマによる単純なミスやプログラムの論理的欠陥によって発生することが多い。メモリーリークが起きると「エラーを引き起こす」または「即座に停止する」といった現象が発生する。 -wikipediaより一部改編-

平たく言うと「なんかやべぇ状況」ということです。

今までサルできがこの件に一切触れてこなかったのは、
今くらいのコードであれば気をつけていればメモリーリークを起こす可能性が低いということで、
決して私が忘れていたわけではないということを今言っても無理がありますか。

…コホン。

ということで、そんな怖いメモリーリークを事前に検知してくれるのが
Clang Static Analyzerというツールです。
事前メモリーリークチェックツールですね。

ダウンロードページはこちらにあります。
http://clang-analyzer.llvm.org/

で、こちらをインストールして実行するためには「コマンドからXXして。。。」みたいな説明があっちこっちで書かれています。

例えば
アシアルブログさん
※iPhoneSDK3.0に入れるには少し手順が必要みたいです。
iphoneアプリで稼げるのかさん

こんな感じで。
でも少し、というか結構難しそうです。
おそらくクソアプリ課長さんもここで頭から煙を吐いている状況だと思います。

実は、、、大変申し上げにくいにのですが、、、
iPhoneSDK(Xcode3.2以上)には、Clangを解析エンジンにしたツールが、、、

既に入っております。
MAJIDE? Oh, Yeah.

こちら。ドン。
答えてズンズン!:メモリーリークを調べてみよう
<クリックで拡大>

あーなんか出てるー。。。

念のため本物のClangのページのサンプルはこちら。
答えてズンズン!:メモリーリークを調べてみよう

クリソツ。
くねくねした線とか。矢印とか。
おんなじものでしょう!コレ。ねぇ!(勢いで押し切るパターン)

使い方はこんな感じです。

STEP1 : プロジェクト>プロジェクト設定を編集
答えてズンズン!:メモリーリークを調べてみよう
<クリックで拡大>

STEP2 : 静的アナライザを実行をチェック
答えてズンズン!:メモリーリークを調べてみよう
<クリックで拡大>

STEP3 : Build and Analyzeを実行
答えてズンズン!:メモリーリークを調べてみよう
<クリックで拡大>

これだけ。
これで、こんな処理をしてくれます。


できること
コードレベルで以下のチェックをしてくれる。
・ロジック:未初期化変数の使用や、ヌルポインタの参照等。
・メモリ管理:リークチェック等。
・デッドストア:未使用変数への代入等
・API usage:環境依存のAPI usage
参照:Natsu’s noteさん


いかがだったでしょうか!
問題解決できたでしょうか!クソアプリ課長さん!ねぇ!(勢いで押し切るパターン)

え?これは知ってるからツールの導入方法を教えろよ。ですか。
そっちのほうはー。。。少々面倒そうと言いますか。こっちでなんとか、、なりませんかね?

とりあえずあっさり代替案が見つかってしまったので喜び勇んで書いております。
ツールインストールパターンをご希望でしたらまたご連絡下さいマセ。
タイミングを見て、、、やってみます。やれたら。

当ブログではみなさまからのご質問、リクエスト等を募集しております。
「ここがよくわかんない」「こんな機能を作ってみて」などがございましたら、
適当なコメント欄に記入しておいてください。
ネタの隙間でお答えします。

それでは次回お会いしましょう。

答えて~ズン!ズン!

関連する記事:


Advertisement