どうして起こる"EXC_BAD_ACCESS"エラー時はwifiのでしょうか?
質問
もしかしたら以下のエラー
プログラム受信信号:"EXC_BAD_ACCESS".
警告:check_safe_call:な再現在のフレーム警告:な回復以前に選択します。
警告:な回復以前に選択します。
私のアプリはwifi情報
libHandle = dlopen("/System/Library/PrivateFrameworks/ MobileWiFi.framework/MobileWiFi",RTLD_LAZY);
open = dlsym(libHandle, "Apple80211Open");
bind = dlsym(libHandle, "Apple80211BindToInterface");
close = dlsym(libHandle, "Apple80211Close");
scan = dlsym(libHandle, "Apple80211Scan");
open(&airportHandle);
bind(airportHandle, @"en0");
のコードに達する open(&airportHandle)
, 私のエラーがなんなのかがここで停止します。
たいのですが解決す。
解決
当EXC_BAD_ACCESS誤差は、通常うメッセージを送信するために放流されたオブジェクトです。の ベスト にこれらのトラックが利用 NSZombieEnabled.
この作品の利用などにより実際に放出するオブジェクトが包装では"ゾンビ"に設定フラグにするかというのでは、通常公開されています。このように、しようとした場合にアクセスすると、それはまだ知らないのエラーは、この少しの情報は通常トラックバックの発行しました。
で特に役立背景のスレッドがデバッガがcrapsして他の有用な情報があります。
非常に重要な注意 しかし、いままでする必要が100%だことだけにバーコードな分布をコードです。でもがんの発売は、アプリおよび漏洩および漏洩を漏らすことになります。思い出しているのは、このログは私のappdelegate:
if(getenv("NSZombieEnabled") || getenv("NSAutoreleaseFreedObjectCheckEnabled"))
NSLog(@"NSZombieEnabled/NSAutoreleaseFreedObjectCheckEnabled enabled!");
ご不明な点やお困り事が、正確な線、その構築とデバッグ(CMD-Y)の代わりにビルド、ラン(CMD-R)アプリのライブラリのデバッガまで正確に線と組み合わせNSZombieEnabled,対応することができるでしょうぐうはいかがでしょうか。
他のヒント
EXC_BAD_ACCESSは常に発生します。あなたのサンプルコードでは、私は、それがそのことについては、すべての時に初期化されwheter airportHandle
が初期化されるか、または場所を確認することはできません。
それが初期化されているが、あなたはちょうどあなたがどこかにハンドルを解放かどうかをチェックしてみてくださいする必要があります。、そのコードを投稿するのを忘れた場合は、
このようなアクセス違反をデバッグするには、しばしばNSZombieEnabled
するYES
環境フラグを設定すると便利です。これは、コンソールに解放されたメモリへのアクセスをログに記録するのObj-Cのランタイムが発生します。あなたは<のhref = "http://www.corbinstreehouse.com/blog/2007/10/instruments-on-leopard-how-to-debug-those-random-crashes-in-your-cocoa-appを見つけることができます/」のrel = 『nofollowをnoreferrer』>あなたの問題を見つけるために、楽器と一緒にその情報を使用する方法についての完全なチュートリアルでます。
あなたは楽器で簡単にそれを行うことができます。これは本当に素晴らしい記事を参照してください。
<のhref = "http://www.corbinstreehouse.com/blog/2007/10/instruments-on-leopard-how-to-debug-those-random-crashes-in-your-cocoa-app/コメントページ-1 /#コメント-43762" のrel = "nofollowをnoreferrer"> http://www.corbinstreehouse.com/blog/2007/10/instruments-on-leopard-how-to-debug-those-random-クラッシュ・イン・ご-ココアアプリ/コメント-ページ-1 /#コメント-43762 の
EXC_BAD_ACCESS。 uはあなたがさらにfuture.itに必要とされている任意のオブジェクトをリリースしたときに主に発見されたことを見つけることができませんが、uはDEBUGモードであることを持っている必要があります見つけるためのソリューションがあります。そして、これらのリンクをたどる。
http://www.codza.com/how-to-デバッグEXC_BAD_ACCESSオンiphone の
それは実際に動作する。
私は同じことに取り組んでいる、と私は同じ問題を取得します。デバッグモードで入力した場合、あなたは私たちがopen = dlsym(libHandle, "Apple80211Open");
機能を使用する場合、まだ
私の意見ではあなたは、この機能が含まれていませんでした枠組みでApple80211Open
を探しています。
Apple80211Open
は>のiOS 2.xのSDKに古くなっApple80211
プライベートなフレームワークです。 3.xおよび4.xのSDKのためのものであるMobileWifiフレームワークの等価は、/System/Library/SystemConfiguration/WiFiManager.bundle/WiFiManager
代わりに/System/Library/PrivateFrameworks/MobileWiFi.framework/MobileWiFi