The purpose of this application is to provide a scheme for locating objects in a coredump file. The scheme injects label fields about classes into the code. In the coredump file generated after the code is compiled and run, the objects of the classes contain the labels of the fields. Thus, for code injected with label fields, when creating objects of these classes, the contents of the field labels will be inserted. Thus, when generating coredump files, the address information of the corresponding class objects stored in its PT_LOAD Segment will also contain the field labels. By scanning these field labels, you can locate all the objects labeled with the label field, regardless of whether they are directly related to the field information.
【技术实现步骤摘要】
实现在coredump文件中定位对象的方法及设备
本申请涉及信息
,尤其涉及一种实现在coredump文件中定位对象的方案。
技术介绍
coredump文件是C/C++进程发生异常时,内核生成的一种调试转储文件。coredump文件按ELF(ExecutableandLinkableFormat、可读可链接格式)组织,但是它只有ExecutingView(执行视图),而没有LinkingView(链接视图),也就是coredump文件只有Programheaders(程序头部定义),没有SectionHeaders(分段头部定义)。所以,使用readelf命令查看coredump文件时,只能看到Segment,而看不到Section。当程序产生异常时,系统会通过coredump文件保存现场信息。coredump文件的数据结构如图1所示,包括ELFheader(ELF文件头)、Programheaders(程序头部定义)、PT_NOTESegment、PT_LOADSegment。其中,PT_NOTESegment是用于保存程序产生异常时的线程状态信息(ThreadStatus)、寄存器信息(Registers)的Segment(段),PT_LOADSegment是用于进程已映射的内存段和代码段,其中,对于属性为RX(只读可执行)的代码段,不保存其内容,而是保存其地址信息。在使用gdb、lldb(Linux、Mac平台常用的解析coredump文件的工具)等常用工具分析coredump时,可以通过线程状态信息、寄存器信息中的内容获取一些对象,但是由于P ...
【技术保护点】
1.一种设备,其中,该设备包括:注入装置,用于在代码中注入关于类的标签字段,其中,在所述代码编译并运行后所生成的coredump文件中,所述类的对象包含所述字段标签。
【技术特征摘要】
1.一种设备,其中,该设备包括:注入装置,用于在代码中注入关于类的标签字段,其中,在所述代码编译并运行后所生成的coredump文件中,所述类的对象包含所述字段标签。2.根据权利要求1所述的设备,其中,该设备还包括:扫描装置,用于在生成coredump文件之后,根据所述标签字段在所述coredump文件的地址段中扫描对象,定位扫描到的对象。3.根据权利要求2所述的设备,其中,所述标签字段包括可变字段和不可变字段,其中,所述可变字段包含所述对象的信息,所述不可变字段用于扫描coredump文件中包含的对象;所述扫描装置,用于根据所述不可变字段,扫描coredump文件中包含的对象,确定包含对象的地址段;以及根据所述可变字段,扫描包含所述对象的地址段,定位所述对象。4.根据权利要求3所述的设备,其中,所述可变字段包含对象的类标识;所述扫描装置,用于根据所述可变字段中对象的类标识,扫描包含所述对象的地址段,确定扫描到的对象的类。5.根据权利要求4所述的设备,其中,所述可变字段包含对象的类大小;所述扫描装置,用于根据所述可变字段中对象的类大小,确定扫描的地址偏移量;以及在扫描完当前对象的标签字段的地址时,跳过所述地址偏移量,扫描下一对象对应的地址。6.根据权利要求2至5中任一项所述的设备,其中,所述扫描装置,还用于在根据所述标签字段在所述coredump文件的地址段中扫描对象之前,从所述代码编译的符号表中读取所述标签字段。7.一种方法,其中,该方法包括:在代码中注入关于类的标签字段,其中,在所述代码编译并运行后所生成的coredump文件中,所述类的对象包含所...
【专利技术属性】
技术研发人员:杨江华,
申请(专利权)人:阿里巴巴集团控股有限公司,
类型:发明
国别省市:开曼群岛,KY
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。