当我为iPhone编写程序时,苹果环境在出现问题时会做什么(从“无法识别的选择器”到其他任何东西),应用程序崩溃并在控制台上,我有这个毫无意义的堆栈调试喷出看起来像这样:
2009-12-19 11:57:37.843 ModelsProg[394:207] Stack: ( 30884955, 2431960329, 31266875, 30836342, 30688962, 10115, 2721311, 2759178, 2747272, 2729683, 2756789, 38981329, 30669696, 30665800, 2723433, 2760707, 9948, 9802 )
老实说,我想不出更多无用的方式来尝试帮助开发人员跟踪错误。它甚至没有告诉你问题的来源,除非[394:207]是一些神秘的错误指示。
我怎么能:
答案 0 :(得分:1)
您正在运行没有符号的二进制文件(可能是Release二进制文件)或崩溃发生在崩溃跟踪机制无法访问符号的位置(如未捕获的异常)。那些#s是通常被查找以产生符号的地址。
通常,对于像这样的堆栈喷出,在喷出之前的行上有未被捕获的异常日志消息。 那通常会为您提供所需的所有信息。
但是,如果你做需要象征堆栈跟踪,有几种方法可以这样做。
如果您在gdb
,则可以使用info symbol 30884955
(显然,替换各种数字)来获取有关堆栈跟踪中该地址的符号的更多信息。 info line *30884955
可能会产生更有用的结果。
但关键是,您需要符号文件可访问。从Xcode开始,他们应该就在那里(除非你打破了应用程序的符号生成配置)。否则,您需要使用symbol-file
命令加载它们。
如果要自动执行此操作或在gdb之外执行符号操作,请使用atos
命令。