2013-06-07 8 views
5

私のソフトウェアはSIGUSR2信号を使用していますが、私はLLDB(Xcode 4.6.2)をデバッガとして使用しています。LLDB初期化時に信号を無効にする

process handle --pass true --stop false --notify true SIGUSR2 

私はLLDBは常に起動時にこのコマンドを実行させる方法を探しています:私はSIGUSR2でストーピングとコマンドを使用してそうしているからLLDBを無効にしたいと思います。私は自分の.lldbinitにsettings append target.process.extra-startup-command processの行に沿って何かを追加してみましたが、target.process.extra-startup-command設定の値を変更しています(settings showコマンドのように)。この設定を使用して、常にprocess handleコマンドを実行してSIGUSR2信号を無効にすることができます。

私は、ここに掲載された「解決策」を知っています:Permanently configuring LLDB (in Xcode 4.3.2) not to stop on signals。私はしかし、よりエレガントなソリューションが存在する場合はそれを探しています。

答えて

4

現在、ブレークポイントコマンドmainでこれを実行することが、最も洗練された解決方法です。

gdbは、どのようなシステムであっても、すべてのプロセスがUNIXシグナルに魔法のように応答するというこの世界観を持っていました。それで、たとえプロセスがあったとしても、プロセスがSIGINTを取得したときに何が起こるのかを言うことは理にかなっていました。 lldbでは、プロセスが作成されると、プロセスがその信号とそのデフォルト動作を教えてくれます。面白いことですが、プロセスが始まる前に信号動作の設定オプションを保存する自然な場所がないということを除けば、これは意味があります。これは追加しなければならないものです。

"プロセスの起動"だけでなく "プロセスの終了"や "共有ライブラリの読み込み"などの "プロセスのライフサイクルイベント"をトリガーする機能は非常に便利です。この機能は、拡張リクエスト(http://bugreport.apple.com/)を提出することは素晴らしいことです。そのようなバグは機能の投票として機能するからです。

BTW、target.process.extra-startup-commandはまったく別のことをします。 lldbが実行を開始する前に、デバッグエージェント(debugserverなど)に送信するシーケンスにいくつかのコマンドを追加することができます。その主な用途は、より多くのデバッグサーバーロギングをオンにすることです。

関連する問題