AddressSanitizerが思った以上に優秀

この記事は1年以上前に掲載されたものです。 情報が古い場合がありますのでお気を付け下さい。

memcpyでアドレスオーバーラップさせると・・・で少しだけ言及したが、gcc4.8以降あるいはclang 3.1以降ではAddressSanitizer(略称ASan)が使えるようになっている。また、Xxode 7以降ではビルドスキーマの設定にAddressSanitizerを使用するかどうかのオプションが増えており、容易にAddressSanitizerが使える。

AddressSanitizerは有効にすることで、バッファーオーバーフローやヒープオーバーフロー、あるいはmemcpyのオーバーラップを検知して、検知したら異常終了するようにできる。

コマンドラインでコンパイルする場合は、コンパイル時に以下のフラグを追加する。

XcodeでAddressSanitizerを使う場合は、XcodeのSchemeの設定のDiagnosticsにある「Enable Address Sanitizer」に
チェックを入れればAddress Sanitizerが使えるようになる。

ただし、Address SanitizerそのものはXcode 7以降が必須となる。

AddressSanitiezrを使うことでこれまで困難だったバッファーオーバーフローなどのバグを見つけやすくなっているので、デバッグでは上手く使っていきたいところである。

ウェブマスター。本ブログでITを中心にいろいろな情報や意見などを提供しています。ご用の方はコメントかコンタクトフォームにて。
スポンサーリンク

フォローする