作者:Fxnananana | 来源:互联网 | 2022-12-26 17:42
我正在寻找一种方法来连接到使用lldb的进程而不停止它.我正在调试的程序有竞争条件,我担心暂停会导致更多的熵.
类似的问题,但对于gdb:gdb附加到一个没有停止的进程.
使用版本:
lldb -v
lldb-900.3.72
Kristina Bro..
5
这是不可能的x86_64
或ARMv8-A
(我在这里做出一个假设,但它代表了大多数现代OS设计/架构).
通常,任何时候进程(暂时忘记实时的东西)进行系统调用或被中断(这可能以多种方式发生,在抢占式操作系统中)它将产生操作系统,此时有一个不确定的时间段在执行返回到该点之前,取决于系统状态和调度程序决定的内容(基于诸如时间和优先级之类的事情),它可能花费时间做其他事情.
您应该立即附加并继续执行.如果不引入某种形式的抖动,就没有办法做你真正想要的事情(即使启动LLDB本身也可能发生在同一个CPU上,你最后"运行"的过程).
这就是为什么种族条件是一种调试的痛苦,因为它们一直很难重现.调试时有一些方法可以将抖动降至最低,但它们涉及相当复杂的,通常是特定于操作系统的工具.
我还建议寻求ThreadSanitizer
帮助找到潜在的竞争条件.
1> Kristina Bro..:
这是不可能的x86_64
或ARMv8-A
(我在这里做出一个假设,但它代表了大多数现代OS设计/架构).
通常,任何时候进程(暂时忘记实时的东西)进行系统调用或被中断(这可能以多种方式发生,在抢占式操作系统中)它将产生操作系统,此时有一个不确定的时间段在执行返回到该点之前,取决于系统状态和调度程序决定的内容(基于诸如时间和优先级之类的事情),它可能花费时间做其他事情.
您应该立即附加并继续执行.如果不引入某种形式的抖动,就没有办法做你真正想要的事情(即使启动LLDB本身也可能发生在同一个CPU上,你最后"运行"的过程).
这就是为什么种族条件是一种调试的痛苦,因为它们一直很难重现.调试时有一些方法可以将抖动降至最低,但它们涉及相当复杂的,通常是特定于操作系统的工具.
我还建议寻求ThreadSanitizer
帮助找到潜在的竞争条件.