gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 11:00:20 24 4
gpt4 key购买 nike

请帮助我,我是 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com