是否有一种方法可以在
是否可以在Swift中为基于Swift的代码设置符号断点?
假设我有一个像
这样的类class AwesomeSauce {
var ingredients: [String]
init(useIngredients:[String]) {
ingredients = useIngredients
}
}
假设ingredients
数组的排序是
var specialSauce = AwesomeSauce(["Sugar","Spice","Everything Nice", "Chemical 'X'"])
specialSauce.ingredients.sort({ $0.length() > $1.length() })
让我们也说(因为我没有注意),我排序这个数组在一堆不同的地方在我的项目。
我想知道ingredients
何时排序。
是否有一种方法可以在Array.sort()
或AwesomeSauce.ingredients.sort()
或类似的东西上设置符号断点?
我似乎不能让任何东西工作,我已经尝试了各种可能的符号排列。
在Swift.Array.sort
上设置一个符号断点应该可以达到这个目的。
下面是使用swiftc和lldb的命令行会话示例:但你也可以在Xcode:
中做同样的事情<>之前$ xrun -sdk macosx swift -g main.swift$ LLDB main(lldb)创建主目录当前可执行文件设置为"main"(x86_64)。(lldb) b main断点1:where = main 'main + 106在main.swift:13,地址= 0x0000000100001aea(lldb)运行进程8032已启动。/主要的(x86_64)断点1增加了7个位置断点1中添加了1个位置断点1增加了4个位置进程8032停止*线程#1:tid = 0x1c46ff, 0x0000000100001aea main ' main + 106在main.swift:13,队列= 'com.apple。主线程',停止原因=断点1.1帧#0:0x0000000100001ea main 'main + 106在main.swift:1310}11}12-> 13 var specialSauce = AwesomeSauce(useIngredients: ["Sugar","Spice","Everything Nice", "Chemical 'X "])1415 specialSauce.ingredients。({count($0)> count($1)})16b Swift.Array.sort断点2:where = libswiftCore.dylib 'Swift.Array。sort (inout Swift.Array)((A, A) -> Swift.Bool) -> (), address = 0x0000000100030160(lldb) c8032进程恢复进程8032停止*线程#1:tid = 0x1c46ff, 0x0000000100030160 libswiftCore.dylib 'Swift.Array。sort (inout Swift.Array)((A, A) -> Swift.Bool) -> (), queue = 'com.apple. array . ')主线程',停止原因=断点2.1帧#0:0x0000000100030160 libswiftCore.dylib 'Swift.Array。sort (inout Swift.Array)((A, A) -> Swift.Bool) -> ()libswiftCore.dylib 'Swift.Array。排序(inout Swift.Array) ((,) -> Swift.Bool) -> ():-> 0x100030160: push %rbp0x100030161: movq %rsp, %rbp0x100030164: pushq %r150x100030166: pushq %r14(lldb)英国电信*线程#1:tid = 0x1c46ff, 0x0000000100030160 libswiftCore.dylib 'Swift.Array。sort (inout Swift.Array)((A, A) -> Swift.Bool) -> (), queue = 'com.apple. array . ')主线程',停止原因=断点2.1* frame #0: 0x0000000100030160 libswiftCore.dylib 'Swift.Array。sort (inout Swift.Array)((A, A) -> Swift.Bool) -> ()框架#1:0x0000000100001c99 main 'main + 537 at main.swift:15框架#2:0x00007fff8cff65c9 libdyld。start + 1