Boo*_*oon 46 debugging callstack swift
在Objective-C中,您可以通过执行以下操作来打印调用堆栈:
NSLog(@"%@", [NSThread callStackSymbols]);
Run Code Online (Sandbox Code Playgroud)
如何在不使用Foundation类的情况下在Swift中执行此操作?
Dun*_*n C 76
正如雅各布森所说,使用以下内容:
print(NSThread.callStackSymbols())
Run Code Online (Sandbox Code Playgroud)
print(Thread.callStackSymbols)
Run Code Online (Sandbox Code Playgroud)
这是Swift代码.它使用的是基金会方法,但你在iOS上做的比例是90%.
请注意,如果您使用以下格式看起来更好:
Thread.callStackSymbols.forEach{print($0)}
Run Code Online (Sandbox Code Playgroud)
从调试器命令行,您可以键入
e Thread.callStackSymbols.forEach{print($0)}
Run Code Online (Sandbox Code Playgroud)
Dou*_*mos 10
对于Swift 3使用:
print(Thread.callStackSymbols)
Run Code Online (Sandbox Code Playgroud)
或者为了更好的格式
for symbol: String in Thread.callStackSymbols {
print(symbol)
}
Run Code Online (Sandbox Code Playgroud)
print(Thread.callStackSymbols.joined(separator: "\n"))
Run Code Online (Sandbox Code Playgroud)
通过这段代码,人们可以看到每一行不同行中的调用。
1 MyApp 0x0000000100720780 $s9MyAppModule....
2 CoreFoundation 0x0000000181f04c4c EA9C1DF2-94C7-379B-BF8D-970335B1552F + 166988
3 CoreFoundation 0x0000000181f99554 EA9C1DF2-94C7-379B-BF8D-970335B1552F + 775508
4 CoreFoundation 0x0000000181f6eb34 EA9C1DF2-94C7-379B-BF8D-970335B1552F + 600884
5 CoreFoundation 0x0000000181f19754 _CFXNotificationPost + 696
6 Foundation 0x0000000183634138 86D8A58D-B71F-34C6-83E0-014B2B835F1D + 106808
Run Code Online (Sandbox Code Playgroud)
小智 5
这稍微改善了输出.
for symbol: String in NSThread.callStackSymbols() {
NSLog("%@", symbol)
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
17671 次 |
| 最近记录: |