【问题标题】:Debugging Plugins in another thread在另一个线程中调试插件
【发布时间】:2012-11-19 08:06:41
【问题描述】:

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

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

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

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

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

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

有没有办法让用户仍然可以使用 XCode 开发/调试他们的插件,避免上述 2 个问题?

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

TIA!

【问题讨论】:

    标签: c++ xcode llvm dylib lldb


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多