注: この質問は、iPhone の起動について私が尋ねた別の質問に由来しています:接続された iPhone でインストール済みのアプリを起動する
すべてのシグナル、特にクラッシュ ハンドラで使用する EXC_BAD_ACCESS をキャッチする必要がある状況があります。GDB がプロセスにアタッチされると、プログラムに処理させるのではなく、シグナルを処理してブレークします。
GDBには、handle all noprint pass nostopすべてのシグナルをプログラムに渡し、中断しないコマンドがあります。これは、シグナルリストにリストされていても、EXC_BAD_ACCESS を除く、私が試したすべてのシグナルで機能します。
現在、i386 Darwin 6.3.5 バージョンの GDB にもコマンドがありdont-handle-bad-access 1ます。これをオンにしてシグナルをトリガーすると、GDB はプログラムで SIGBUS に変わるシグナルを正常に渡します。
今、私の問題の核心です。接続された iPhone でリモートでデバッグしています。dont-handle-bad-access使用されている GDB バージョンは、残念ながらコマンドがない ARMV7 6.3.5 バージョンです。コマンドをオンのままにしhandle all noprint pass nostopてクラッシュをトリガーすると、デバッガーがハングし、デフォルトのままにすると、デバッガーがシグナルをキャッチし、シグナルハンドラーが入力されなくなります。
このバージョンの GDB を適切に取得して EXC_BAD_ACCESS シグナルを渡す方法はありますか、またはあらゆる種類のクラッシュまたはブレークでアクションをトリガーする方法はありますか (その場合、SIGBUS にシグナルを送るか、少なくともプログラムを終了できます) .