我正在开发iOS应用程序并遇到崩溃。我无法调试它,因为我需要一个代替Apple连接器的串行通信工具。 我设法在失败的实例中生成堆栈跟踪:
0 - 0 Flashtool_iPad 0x0003d8c1 SignalHandler + 152
1 - 1 libsystem_c.dylib 0x3c0fee93 _sigtramp + 42
2 - 2 libsystem_c.dylib 0x3c12283d __sfvwrite + 352
3 - 3 Flashtool_iPad 0x00041811 -[ProgrammingLogic execute_programming_procedure] + 716
4 - 4 Flashtool_iPad 0x0003e86f __52-[ProgramViewController programController:forEvent:]_block_invoke + 54
5 - 5 libdispatch.dylib 0x3c09811f <redacted> + 10
6 - 6 libdispatch.dylib 0x3c09becf <redacted> + 142
7 - 7 libdispatch.dylib 0x3c09bdc1 <redacted> + 40
8 - 8 libdispatch.dylib 0x3c09c91d <redacted> + 184
9 - 9 libdispatch.dylib 0x3c09cac1 <redacted> + 84
10 - 10 libsystem_c.dylib 0x3c0cca11 <redacted> + 360
11 - 11 libsystem_c.dylib 0x3c0cc8a4 start_wqthread + 8
但不幸的是,表示实际失败发生位置的第四行(3 - 3 Flashtool_iPad 0x00041811 -[ProgrammingLogic execute_programming_procedure] + 716
)指向目标C代码中的注释......此声明:4 - 4 Flashtool_iPad 0x0003e86f __52-[ProgramViewController programController:forEvent:]_block_invoke + 54
实际出现在源代码的第48行 - 不是54!
那么偏移来自哪里?
提前致谢
答案 0 :(得分:3)
偏移量不是指示行,而是来自机器代码中函数开头的字节。