0

在我的应用程序中,我有一个插件系统,允许用户开发插件(在 C/C++ dylib 中)并在运行时执行它们(使用 dlopen/dlsym)。

基本上我有一个主线程(正在绘制我的 GUI)和另一个正在加载/运行插件的线程(这是插件线程)。

我想做的是允许用户在 Xcode 中调试插件并保持主线程运行。

我已经知道在 XCode 中你可以创建一个 dylib 项目并在 Info > Launch > Wait for 中设置?启动(效果很好),但我遇到的问题是:

  1. 如果用户停止 dylib 调试,它会关闭启动的主应用程序(我的应用程序,我不想让它继续运行)。

  2. 它完全停止主应用程序线程(GUI 停止刷新,直到用户继续)。

有什么办法仍然允许用户使用 XCode 开发/调试他们的插件,避免上述 2 个问题?

或者我必须在我的应用程序中集成一个文本编辑器并以某种方式直接在我的应用程序中连接 clang++/lldb 以让用户开发/调试(这听起来像是很多工作,特别是因为 XCode 已经具备所有功能)?

蒂亚!

4

1 回答 1

0

lldb 有能力在你step或时运行所有线程next,但是当你中断程序(按暂停)时,所有线程都会停止。lldb 目前没有任何 UI 来做你想做的事——没有技术限制,但我认为我没有看到需要这种行为的用例。向 gdb 添加了一个晦涩的命令,thread dont-suspend-while-stepping该命令将指定一个特定线程并告诉 gdb 允许该线程在调试器执行单步/下一步时允许该线程运行,但即使在这种情况下,当您中断程序时,所有线程也会停止。

于 2012-11-19T21:23:26.933 回答