swift - 当我在swift项目中使用lldb时,无法修改bool值

标签 swift

请帮助我,我是 Swift 新手。

 override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
        super.touchesBegan(touches, with: event)

        var flag = false     
        print(" current->  \(flag)") /** Add a breakpoint  **/
        if flag == true {
            print(" after  -> true")
        }else {
            print(" after ->   false")
        }
    }

我想使用lldb来修改'flag'的值,所以,

(lldb) po flag
false

(lldb) expression flag = true
(lldb) po flag
true

(lldb) continue
2018-11-24 23:57:05.552804+0800 test_swift_lldb[6806:384106] XPC connection interrupted
Process 6806 resuming
 current->  false
 after ->   false

好像没什么用。 请告诉我如何使用lldb,修改bool值。

最佳答案

首先,这似乎是 Swift 和 LLDB 之间的问题。我怀疑 Swift 正在将 var 标志优化到寄存器中。关于类似问题还有其他几个 SO 问题,例如:Why is Xcode's Variables View's “Edit Value” not changing the variable value? 。有趣的是,Xcode 以某种方式解决了这个问题。解决方法似乎是“欺骗” LLDB 识别变量已更新。我修改了你的代码如下:

//
//  main.swift
//  debug_example
//

import Foundation

print("Hello, main")
var flag = false
var debugString = "abcd"
if debugString.count == 0 { flag = true }

print(" current->  \(flag)") /** Add a breakpoint  **/
if flag == true {
    print(" after  -> true")
}else {
    print(" after ->   false")
}

以下是我的 LLDB 命令的简化(输出缩进):

lldb main
breakpoint set --line 8
process launch
    Process 64052 launched:
po flag
    false
ex flag=true
po flag
    true
s
    Hello, World!
    Target 0: (main) stopped.
po flag
    false
ex flag=true
po flag
    true
thread continue
    Resuming thread
    current->  true
    after  -> true

也许其他人可以提供更多信息或一些有关 Xcode 如何解决此问题的见解。

关于swift - 当我在swift项目中使用lldb时,无法修改bool值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53455557/

相关文章:

swift - 以编程方式为 UITextField 创建 .touchUpInside 事件

ios - 来自后台的远程通知

ios - 具有可选函数实现的 Swift @objc 协议(protocol)会导致构建错误

ios - Swift上的AWS dynamoDB batchWriteItem示例

ios - 从 AppDelegate 内访问 NavigationController 指向的初始 View

ios - 快速获取以前的 UIViewController

json - 使用 Rx 编程 Moya 将 JSON 响应映射到对象

ios - 仅从存在用户 UID 的节点获取特定的子值

swift - 如何在 Swift 3 中实现 MRProgress?

ios - 如何在UITableViewController中分配异构数据源?