【问题标题】:lldb - How do I kill commands stuck in infinite loopslldb - 如何杀死卡在无限循环中的命令
【发布时间】:2013-07-01 10:49:17
【问题描述】:

简单的问题,但我似乎无法在网上任何地方找到答案,这真的很令人沮丧。

假设我正在尝试调试这个错误代码:

int myBug()
{
    while(1);
    return 0;
}

如果我使用 LLDB 进行调试并输入 print myBug(),我永远不会得到任何结果(没有意外)。然而,这意味着我不能再调试,因为 LLDB 被卡住并且不能continue。有没有办法杀死print myBug() 命令?到目前为止,唯一的解决方法是退出并重新启动所有内容 - 非常不方便。

我在 Xcode 4.6.1 中使用 LLDB,我尝试了一堆按键,如 Ctrl+C、Ctrl+T,但似乎没有任何效果:(

【问题讨论】:

  • 我刚刚按下暂停键。
  • @H2CO3:试过了,不行。
  • @HotLicks 没有暂停按钮。只有一个播放按钮,点击它完全没有任何作用。
  • 如果是播放按钮,那么您的代码已经停止。
  • 作为一种解决方法,您可以使用活动监视器退出该进程,或者使用终端,使用kill -3 pid

标签: xcode lldb


【解决方案1】:

是的,在 Xcode 中没有简单的方法可以中断这个表达式的计算。如果您使用命令行 lldb,control-C 将按预期工作。您可以向您的进程发送信号killall -INT appname。您可以给 lldb 一个表达式评估超时,以微秒表示,因此调用 myBug() 的五秒超时看起来像

(lldb) expr -t 5000000 -- myBug()
error: Execution was interrupted, reason: breakpoint 1.1.
The process has been returned to the state before expression evaluation.
(lldb)

如果这是您的工作流程中出现的问题,您可以通过 http://bugreport.apple.com/ 在 Xcode 上提交有关此问题的错误报告。

【讨论】:

    猜你喜欢
    • 2021-01-05
    • 1970-01-01
    • 2016-11-29
    • 1970-01-01
    • 2011-03-30
    • 2023-04-06
    • 2014-05-07
    • 2011-12-19
    • 2013-08-04
    相关资源
    最近更新 更多