ios - LLDB - 如何在不停止进程的情况下附加到进程

标签 ios macos lldb

我正在寻找一种方法来附加到使用 lldb 的进程而不停止它。我正在调试的程序存在竞争条件,我担心暂停会导致更多的熵。

类似的问题,但针对 gdb:gdb attach to a process without stop .

使用的版本:

lldb -v
  lldb-900.3.72

最佳答案

这在 x86_64ARMv8-A 上是不可能的(我在这里做了一个假设,但它代表大多数现代操作系统设计/架构)。

一般来说,任何时候进程(暂时忘掉实时的东西)进行系统调用或被中断(在抢占式操作系统中,这可能以多种方式发生)它都会屈服于操作系统,此时有一个在执行返回到该点之前,它可能花在做其他事情上的不确定时间段,这取决于系统状态和调度程序决定的内容(基于时间和优先级等因素)。

您应该立即附加并恢复执行。如果不引入某种形式的抖动,就没有办法做你真正想做的事情(即使启动 LLDB 本身也可能发生在你上次“运行”的进程所在的同一个 CPU 上)。

这就是为什么竞争条件很难调试,因为它们很难一致地重现。有一些方法可以在调试时将抖动降至最低,但它们涉及相当复杂的工具,通常是特定于操作系统的工具。

我还建议查看 ThreadSanitizer 以帮助找到潜在的竞争条件。

关于ios - LLDB - 如何在不停止进程的情况下附加到进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48958487/

相关文章:

ios - Swift 4 : UIView Subclassing, 获取父 View

ios - 动画不会在 UITableView 的 backgroundView 上被杀死

rust - 当多个 Rust 源文件共享相同的名称时,我可以设置 LLDB 断点吗?

swift - LLDB 输出错误 : use of undeclared type '$__lldb_context'

ios - 从 XCode 6.0.1 的模拟器列表中选择合适的 iOS 版本

ios - 将两个图像混合在一起后检索原始图像

python - 运行 fish shell 时 'unknown locale: UTF-8' 导入 (Mac OS X) 错误 'pandas'

c - 如何在我的 Mac 上添加 graphics.h 库?

python - 如何链接 home brew python 版本并将其设置为默认值

python - 如何使用 lldb 调试 C++ pybind11 模块?