【问题标题】:How to fix lldb stopping immediately after run call?如何在运行调用后立即修复 lldb 停止?
【发布时间】:2019-07-16 20:41:54
【问题描述】:

我在 Mojave 上使用 Xcode 10.2.1 上的 lldb。一旦命令“运行”到 lldb,就会发生这种情况:

(lldb) target create "<executable>"
Current executable set to '<executable>' (x86_64).
(lldb) run
Process 95857 launched: '/Users/<path to executable>' (x86_64)
Process 95857 stopped
* thread #2, stop reason = exec
    frame #0: 0x0000000102491000 dyld`_dyld_start
dyld`_dyld_start:
->  0x102491000 <+0>: popq   %rdi
    0x102491001 <+1>: pushq  $0x0
    0x102491003 <+3>: movq   %rsp, %rbp
    0x102491006 <+6>: andq   $-0x10, %rsp
Target 0: (pmtad) stopped.

我已尝试查找与 dyld`_dyld_start 打印输出相关的问题,因为这是我能想到的唯一线索。我读到这可能与尝试重新运行可执行文件有关,尽管我不太确定所描述的内容。

我应该可以正常运行。它适用于具有旧操作系统的其他机器。

【问题讨论】:

    标签: macos lldb macos-mojave


    【解决方案1】:

    您正在运行的程序执行了另一个(或相同的)二进制文件。这就是“stop reason = exec”消息的含义。默认情况下,当程序重新执行自身时,lldb 会停止,但如果您不希望它停止,请执行以下操作:

    (lldb) settings set target.process.stop-on-exec false
    

    你也可以把它放在你的 ~/.lldbinit 中。

    【讨论】:

    • 在覆盖此功能方面有什么我应该担心的吗?
    • 唯一关闭的是您正在调试的程序由于某种原因自行执行的通知。在有和没有这个设置的情况下,程序本身在 lldb 下的行为将完全相同。是否将其设置为打开或关闭只是在能够查看程序何时调用 exec 与在被告知后必须“继续”之间进行权衡。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-01-19
    • 1970-01-01
    • 2014-11-22
    • 1970-01-01
    • 2020-07-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多