8 iphone debugging xcode cocoa-touch uikit
Xcode/objective c并没有真正打印出有用的堆栈跟踪.我的应用程序崩溃了,该死的东西只给我45353453,34524323,6745345353,457634524234这样的数字.完全没用.
所以我想制作一个NSLog(); 在我的整个应用程序中的每个方法的开头.但也许有一种更简单的方法来找出真正的堆栈跟踪,人性可读?不仅在应用程序启动或崩溃时,而且在所有发生的活动中始终如此?会帮助调试很多.
这样的事情也可能对你有所帮助
@implementation UIApplication (MyCategory)
+ (void)logStackTrace {
@try {
[[NSException exceptionWithName:@"Stack Trace" reason:@"Testing" userInfo:nil] raise];
}
@catch (NSException *e) {
NSLog(@"%@", [e callStackSymbols]);
}
}
@end
Run Code Online (Sandbox Code Playgroud)
实际上没有办法从应用程序内部可靠地执行此操作。如果您的应用程序崩溃并且没有给出符号,听起来您正在运行剥离的发行版本而不是调试版本?
如果您有未剥离的版本,则可以使用命令将这些数字与堆栈帧的实际名称关联起来atos
(请参阅终端或在 Xcode 文档或 Google 中man atos
搜索)。atos
您可能不想记录每个方法调用的堆栈。信息量很快就会变得难以承受。为什么你的应用程序中的大多数方法都会被调用,这不应该是一个谜(尽管需要一段时间才能理解为什么 UIKit 和你的应用程序之间的接口如此工作)。
归档时间: |
|
查看次数: |
5203 次 |
最近记录: |