2012-01-06 11 views
0

"SIGUSR2"を受け取ったら、アプリケーションは何らかの処理を行う必要があります。XCode - シグナルを使ったアプリケーションのデバッグ

私はsignal()を使って、システムのデフォルトシグナルハンドラをmimeに置き換えます。

XCodeでデバッグしているときに、コマンドラインに「kill -31 pid」と表示され、コード行で停止します。私がそれを続けると、アプリケーションはmimeのシグナルハンドラを呼び出さずに実行されます。

Xcodeでデバッグ中に、私は右のそれを行うことができますどのように

... XCodeのは、信号そのものを食べるようですか?

+0

:-)ただ、思考それはXCodeの良い外に動作します... – notgeek

+0

。アプリケーションを一時停止し、Xcode GDBのcmdlineに "handle SIGUSR2 nostop"と入力すると、Xcodeはシグナルを食い止めず、アプリケーションはターゲットシグナル自体を処理できます。いくつかスマートな方法があると思っています! – notgeek

答えて

0

ええ、最近信号を持ったコードを使っていました。まず、GDBがシグナルをどのように扱うかを正確に調べる必要があります。私はそれがドキュメントにあるかどうか分からないので、ネットの周りに掘る。私が読んで覚えているところから、GDBはいくつかのシグナルを傍受し、デバッガが正しく動作するようにします。これは、あなたがアプリが正しく動作していない理由です。

私はこのことについては何の意味もありませんが、私が見ていたコードでは、信号の使用が間違っているように感じました。 iOS SDKには、プロセス間通信、タスクシーケンシングなどのさまざまな機能があります。おそらく、あなたのコードはR & Dの恩恵を受け、信号を必要としないように再設計するでしょう。私はそれに対処する方法を見つける

+0

Mac OS Xでは動作しますが、IOSアプリケーションでは動作しません。それは一種のデーモンのように見えます。ここの信号はテストのためだけに使用されていますが、問題は面倒です。 – notgeek

+0

これで、デバッガが無効になっているものを確認してください。私が読んでいたことから、あなたはそれについて多くのことをすることはできないと思っています。あるいはデバッガを不安定にする可能性が高いからです。それは私の理解です。 – drekka

関連する問題