我想让断点打印在控制台中被调用的测试的名称。这可能吗?
相关地,我能否确定断点条件取决于哪个函数使我们到达了断点?
答案 0 :(得分:1)
虽然名称不完全是“函数”,但您可以使用lldb
的命令将调用堆栈尽可能远地打印出来。
在Xcode中,使用bt 2
的“调试器命令”操作创建一个断点(2限制了要打印的调用堆栈的深度)。 如果您不希望断点实际停止处理,请同时勾选底部的“自动继续...”复选框。
点击断点后,您将在Xcode窗口底部的“调试区域”的“调试器输出”窗格中看到类似的输出。
* thread #1, queue = 'com.apple.main-thread', stop reason = breakpoint 1.1
* frame #0: 0x0000000104982fa8 SharingTest`DataManager.loadFromDisk(self=0x000060800005e3f0) at DataManager.swift:66
frame #1: 0x0000000104998dbe SharingTest`AppDelegate.applicationDidBecomeActive(application=0x00007fe6b9600220, self=0x000060400005b2d0) at AppDelegate.swift:56
答案 1 :(得分:0)
如果添加默认值为#function
的字符串参数,则会使用调用函数名称填充该参数:
func bar(_ funcName:String = #function) {
print("called from function", funcName)
}
func foo() {
bar()
}
foo()
显示“从函数foo()调用”
唯一的问题是,如果您传递一个实际的字符串值,它将覆盖默认值,因此:
func foo() {
bar("snort")
}
打印“从函数snort调用”