注: この質問は、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 にシグナルを送るか、少なくともプログラムを終了できます) .