关于iOS的调试信息文件(dSYM)

调试信息文件(dSYM)中存储着与目标有关的调试信息。它都含有哪些信息?为什么最开始就需要调试信息文件?用任何一种编程语言写的代码都需要一个编译器,将这些代码翻译成可被运行时环境理解的某种中间语言,或者是可在机器的体系结构上直接运行的原生机器码。

调试器通常会集成在开发环境中。开发环境通常支持放置断点使应用停止运行,从而查看代码中变量的值。也就是说,调试器能够实时地使应用停止运行,这样你就可以查看变量和寄存器。有两类重要的调试器:符号调试器和机器语言调试器。机器语言调试器能够在运行到断点时显示逆向过来的汇编代码,允许你观察寄存器的值和内存地址。汇编程序员通常使用这种调试器。符号调试器能够在调试代码时显示应用中使用的符号或变量。跟机器语言调试器不同,符号调试器允许你观察代码中的符号,而不是寄存器和内存地址。

让符号调试器工作起来,需要一个编译过的代码和你编写的源代码之间的链接或映射。这正是调试信息文件中所包含的内容。有些语言,比如Java,会在字节码中注入调试信息。另一方面,Microsoft Visual Studio则支持多种形式,包括独立的PDB文件。


PHP、HTML或Python等语言则有所不同。它们通常没有编译器,所以从某种程度上说,它们不该划归到编程语言的类别中。从技术上看,PHP和Python是脚本语言,而HTML则是一种标记语言。


调试器使用这个调试信息文件将编译过的代码——不管是中间代码还是机器码——映射回源代码。可以将调试信息文件当做游客游览陌生城市时参考的地图。调试器能够参考调试信息文件,根据你在源代码中放置的断点让应用停在正确的位置。

Xcode的调试信息文件称作dSYM文件(因为文件的扩展名为.dSYM)。


从技术上说,每个dSYM文件都是一个包,它包含一个符合DWARF规范并用你的目标名命名的文件。


创建新工程时,默认设置是自动创建一个调试文件。在如图19-1所示的工程文件中的Build Settings选项卡下面有个Build Options,它就是用来进行这项设置的。

enter image description here

图19-1 目标设置中的Debug Information Format设置

dSYM文件会在每次构建工程时自动创建,还可以使用命令行工具dsymutil创建dSYM文件。

 

转自:http://wiki.eoe.cn/page/iOS_pptl_artile_30010.html

posted @ 2013-09-27 15:13  mobileworm  阅读(1471)  评论(0)    收藏  举报