0

私のアプリには、ユーザーがプラグインを開発し(C / C ++ dylibで)、実行時に実行できるようにするプラグインシステムがあります(dlopen / dlsymを使用)。

基本的に、メインスレッド(GUIを描画している)とプラグインをロード/実行している別のスレッド(プラグインスレッド)があります。

私がやりたいのは、ユーザーがXcodeのプラグインをデバッグできるようにし、メインスレッドを実行し続けることです。

XCodeでdylibプロジェクトを作成し、[情報]>[起動]>[待機]で設定できることはすでに知っています。起動する(これはうまく機能します)が、Imが抱えている問題は次のとおりです。

  1. ユーザーがdylibのデバッグを停止すると、起動されたメインアプリケーションが閉じられます(私のアプリは、実行を続けたいので必要ありません)。

  2. メインアプリケーションスレッドを完全に停止します(ユーザーが続行するまでGUIの更新を停止します)。

上記の2つの問題を回避するために、ユーザーがXCodeを使用してプラグインを開発/デバッグできるようにする方法はありますか?

または、テキストエディターとインターフェースclang ++ / lldbをアプリ内に直接統合して、ユーザーが開発/デバッグできるようにする必要があります(特に、XCodeにはすでにすべての機能があるため、多くの作業のように聞こえます)。

TIA!

4

1 に答える 1

0

lldbには、stepまたはnextのときにすべてのスレッドを実行する機能がありますが、プログラムを中断すると([一時停止]を押す)、すべてのスレッドが停止します。lldbには現在、必要なことを実行するためのUIがありません。技術的な制限はありませんが、この動作を必要とするユースケースは見たことがないと思います。gdbにあいまいなコマンドが追加されました。thread dont-suspend-while-steppingこれは、特定のスレッドを指定し、デバッガーがステップ/ネクストであるときはいつでもそのスレッドを実行できるようにgdbに指示しますが、その場合でも、プログラムを中断するとすべてのスレッドが停止します。

于 2012-11-19T21:23:26.933 に答える