WO2022247442A1 - 符号解析方法、装置、设备及存储介质 - Google Patents

符号解析方法、装置、设备及存储介质 Download PDF

Info

Publication number
WO2022247442A1
WO2022247442A1 PCT/CN2022/083583 CN2022083583W WO2022247442A1 WO 2022247442 A1 WO2022247442 A1 WO 2022247442A1 CN 2022083583 W CN2022083583 W CN 2022083583W WO 2022247442 A1 WO2022247442 A1 WO 2022247442A1
Authority
WO
WIPO (PCT)
Prior art keywords
address
symbol
mapping relationship
symbols
addresses
Prior art date
Application number
PCT/CN2022/083583
Other languages
English (en)
French (fr)
Inventor
丰亚东
姜磊
Original Assignee
北京字节跳动网络技术有限公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 北京字节跳动网络技术有限公司 filed Critical 北京字节跳动网络技术有限公司
Publication of WO2022247442A1 publication Critical patent/WO2022247442A1/zh

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/284Relational databases

Definitions

  • Embodiments of the present disclosure relate to the field of computer technology, and in particular, to a symbol analysis method, device, device, and storage medium.
  • embodiments of the present disclosure provide a symbol analysis method, device, device and storage medium.
  • the present disclosure provides a symbol analysis method, including:
  • mapping relationship between the address of the source file in the Apple mobile device operating system iOS and the symbols recognizable by the target system is obtained by parsing the pre-obtained symbol table;
  • the target address range is determined by the plurality of consecutive addresses
  • the first address refers to an address corresponding to a non-breakpoint location in the symbol table
  • the second address refers to a location corresponding to a breakpoint in the symbol table, and is closest to the first address in size, an address with a numerical value less than said first address
  • mapping relationship between the first address and the corrected symbol storing the mapping relationship between the first address and the corrected symbol, the mapping relationship between the target address range and the corresponding symbol, and the mapping relationship between other addresses and symbols in the symbol table in a preset in the database;
  • the symbol corresponding to the address in the log file is searched from the database.
  • the present disclosure provides a symbol analysis device, including:
  • Parsing module for resolving the mapping relationship between the address of the source file in the Apple mobile device operating system iOS and the identifiable symbol of the target system from the pre-obtained symbol table;
  • a merging module configured to merge the mapping relationship between the plurality of consecutive addresses and symbols into a target address range and symbols corresponding to the plurality of consecutive addresses when the symbols corresponding to the plurality of consecutive addresses obtained by parsing are the same mapping relationship, the target address range is obtained by determining the plurality of consecutive addresses;
  • a correction module configured to correct the symbol corresponding to the first address to the second address in the symbol table when the symbol corresponding to the first address in the symbol table matches a preset error symbol after analyzing
  • the corresponding symbol the first address refers to the address corresponding to the non-breakpoint position in the symbol table; the second address refers to the address corresponding to the breakpoint position in the symbol table, and is the same as the first address
  • the size is the closest, and the value is smaller than the address of the first address;
  • a storage module configured to store the mapping relationship between the first address and the corrected symbol, the corresponding relationship between the target address range and the symbol, and the mapping relationship between other addresses and symbols in the symbol table stored in a preset database;
  • the search module is configured to search the database for the symbol corresponding to the address in the log file when receiving the log file sent by the iOS client.
  • the present disclosure provides a computer device, including a memory and a processor, wherein a computer program is stored in the memory, and when the computer program is executed by the processor, the symbol resolution provided in the first aspect is realized method.
  • the present disclosure provides a computer-readable storage medium, the storage medium stores a computer program, and when the computer program is executed by a processor, the processor implements the symbol analysis method provided in the first aspect.
  • mapping relationship between addresses and symbols is pre-parsed from the symbol table, and the following optimization processing can be performed on the pre-parsed mapping relationship.
  • mapping relationship the mapping relationship between consecutive addresses corresponding to the same symbol is integrated into a mapping relationship between the target address range address and the corresponding symbol, so that the number of mapping relationships is reduced, so the storage resources required for storing the mapping relationship can be reduced; The number is reduced, and the subsequent query steps can be accelerated based on the log files sent by the iOS client, which in turn can improve the speed and efficiency of parsing symbols in the log files.
  • FIG. 1 is a flowchart of a symbol analysis method provided by an embodiment of the present disclosure
  • FIG. 2 is a flow chart of searching the corresponding point symbols of addresses in log files from a database provided by an embodiment of the present disclosure
  • Fig. 3 is a schematic structural diagram of a symbol analysis device provided by an embodiment of the present disclosure.
  • Fig. 4 is a schematic structural diagram of a computer device in an embodiment of the present disclosure.
  • Fig. 1 is a flow chart of a symbol analysis method provided by an embodiment of the present disclosure, which can be executed by a computer device; and processing power equipment.
  • the symbol analysis method provided by the embodiment of the present disclosure includes steps S101-S105.
  • the source file in Apple's mobile operating system iOS may be a file of a certain method or function in the iOS application code;
  • the target system may be the iOS system or any system other than iOS, such as Android.
  • the symbols referred to in the embodiments of the present disclosure may be the file name and line number of the source file in the iOS application program code, and the method name of the method calling the source file.
  • the symbol table may include a mapping relationship between the source file address and the debugging information of the compilation unit corresponding to the source file, and the debugging information includes the source file address and the target system identifiable relationship between symbols.
  • step S101 can be subdivided into steps S1011 and S1012.
  • S1011 Obtain the debugging information of the compilation unit corresponding to the address in the source file by parsing from the symbol table;
  • S1012 From the debugging information, find out the mapping relationship between the address of the source file and the identifiable symbols in the target system.
  • the symbol table may specifically be a file in DWARF (Debugging with Attributed Record Formats) format.
  • DWARF is a modulation information format, which is part of the MH_DSYM type file and can be applied to source level debugging.
  • DWARF can include the information of the compilation unit corresponding to the address of the source file.
  • the information of the compilation unit includes the offset of the debugging information of the compilation unit in the import of the source code information segment (The Debugging Information Entry, DIE for short), and the The debugging information includes the debugging information import of the method corresponding to the address of the source file, and the file name and line number corresponding to the address of the source file.
  • DW_AT_low_pc and DW_AT_high_pc respectively represent the start/end computer (referred to as pc) address of the method function
  • DW_AT_name describes the name of the method function
  • DW_AT_decl_file describes the declaration file corresponding to the method function
  • DW_AT_decl_file describes the position of the declaration information of the method function in the declaration file
  • DW_AT_type describes the type of return value of the method function.
  • the following is an example of information for a compilation unit stored in the symbol table.
  • DW_AT_language describes the programming language used by the current compilation unit
  • DW_AT_stmt_list describes the offset of the information of the current compilation unit in the code information segment of the source file, that is, the debug_line section;
  • DW_AT_low_pc and DW_AT_high_pc represent the address of the source file corresponding to the compilation unit.
  • the information of the corresponding compilation unit can be determined from the debug_info part of the DWARF file according to the address of the source file parsed from the symbol table, and then according to the information of the compilation unit, the debugging information of the compilation unit can be determined in According to the offset in the source code information section, the debugging information of the compilation unit is obtained according to the offset, and the method name corresponding to the address of the source file is obtained from the debugging information import of the corresponding method according to the debugging information of the compilation unit, and the debugging information of the compilation unit In the information, find the file name and line number corresponding to the address of the obtained source file.
  • step S101 of this embodiment inquires the mapping relationship between the address of the source file and the characters recognizable by the target system, steps S102-S104 may also be included.
  • the mapping relationship between the parsed address and the symbol can be sorted according to the size of the address.
  • the symbols corresponding to each address are judged. If there are multiple consecutive addresses in the resolved mapping relationship that have the same symbols corresponding to the same symbol, then the mapping relationship between the multiple consecutive addresses and symbols is merged to obtain A mapping relationship between target address ranges and symbols, wherein the target address range refers to an address range obtained by combining the above-mentioned multiple consecutive addresses, and the symbols corresponding to the target address range are symbols corresponding to the multiple consecutive addresses.
  • mapping relationship between multiple consecutive addresses and the same symbol is combined into the mapping relationship between the target address range and the symbol when the symbols corresponding to multiple consecutive addresses are the same, the amount of data that needs to be stored for the mapping relationship can be reduced .
  • the first address refers to the address corresponding to the non-breakpoint position in the symbol table
  • the second address refers to the address corresponding to the breakpoint position in the symbol table and is the same as the first address
  • the size is the closest, and the value is smaller than the address of the first address.
  • the following table is a mapping table between addresses and symbols. As shown in the table below, for the address 0x00000000004080, the corresponding line number is line 0; and the line number of the source file in the application source code cannot be line 0, which is inconsistent with the actual situation. Therefore, it is necessary to correspond to 0x0000000000004080 The line number is corrected.
  • the label is_stmt in the table is used to represent the line where the source code breakpoint is located.
  • the address 0x0000000000004070 corresponds to the breakpoint position, and is the address closest to 0x0000000000004080 among addresses smaller than 0x0000000000004080. Due to a breakpoint The position can only be marked on one line, then the content corresponding to 0x0000000000004070 in the above table and the content corresponding to 0x0000000000004080 (corresponding to the non-breakpoint position) should be located on the same code line in the application source code, so 0x0000000000004080 can be corrected to 70.
  • step S103 is executed after step S102 is executed, that is, firstly step S102 is used to establish the mapping relationship between the target address range and the same symbols corresponding to the multiple consecutive addresses, and then to The wrong mapping relationship in the symbol table is corrected.
  • step S103 can also be executed before step S102, that is, firstly correct the wrong mapping relationship in the symbol table, and then establish the relationship between the target address range and the same symbols corresponding to multiple consecutive addresses mapping relationship.
  • S104 Store the mapping relationship between the first address and the corrected symbol, the mapping relationship between the target address range and the corresponding symbol, and the mapping relationship between other addresses and symbols in the symbol table in in the default database.
  • the embodiment of the present disclosure needs to complete the full analysis of the symbol table, and store the result of the full analysis in a preset database.
  • mapping relationship between the target address range and the corresponding symbol determined by the aforementioned step S102, and the mapping relationship between the first address determined by the aforementioned step S103 and the corrected symbol It also needs to be considered that the mapping relationship between the remaining addresses and symbols that do not conform to the judgment and operation steps of steps S102 and S103 is stored in the preset database.
  • the preset database can be various possible databases; for example, in an application, it can be a persistent database, that is, the database can be stored in the form of hard disk storage; in the embodiment of the present application In another application of , the preset database can also be a non-persistent database established in memory.
  • the iOS client when the iOS client is running the source file (that is, the executable program), the executable program may flash back or freeze due to a bug in the target system corresponding to the address during the programming process. , freezing and other abnormal situations; when these abnormal situations occur, the iOS client will record the status of the source file with the problem and form a log file, and send it to the terminal for processing the log file.
  • the iOS client when the iOS client is running the source file (that is, the executable program), the executable program may flash back or freeze due to a bug in the target system corresponding to the address during the programming process. , freezing and other abnormal situations; when these abnormal situations occur, the iOS client will record the status of the source file with the problem and form a log file, and send it to the terminal for processing the log file.
  • the client processing the log file or after receiving the log file sent by the client searches for the address in the log file, searches for the mapping relationship stored in the database according to the address, and determines the corresponding symbol.
  • the iOS client operating system adopts the address space layout randomization technology (Address Space Layout Randomization (ASLR) for security reasons. offset slide; and in order to obtain the file address file_address, in addition to considering the aforementioned stack address stack_address and load address load_address, it is also necessary to consider the random offset slide.
  • ASLR Address Space Layout Randomization
  • the file address file_address based on the random offset slide
  • mapping relationship is not directly stored in the preset database for use in subsequent steps S105 analyzes the log file sent by the client; instead, the following operations are performed: (1) the mapping relationship corresponding to the same symbol in the mapping relationship is integrated into a mapping relationship between the target address range address and the corresponding symbol; (2) ) correcting the wrong symbol to the correct symbol when it is determined that the symbol table in the mapping relationship matches the preset wrong symbol.
  • Adopting the symbol analysis method provided by the embodiments of the present disclosure can achieve the following technical effects: (1) the mapping relationship between consecutive addresses corresponding to the same symbol in the mapping relationship is integrated into a mapping relationship between a target address range address and the corresponding symbol, so that the number of mapping relationships Reduce, so can reduce the storage resources needed for mapping relationship storage; Due to the reduction in the number of mapping relationships, the subsequent query step can be accelerated when step S105 is performed, and then the speed and efficiency of symbol resolution in the log file can be improved; (2) in When it is determined that the symbol table in the mapping relationship matches the preset wrong symbol, the symbol table is corrected to the correct symbol, so that the use of this mapping relationship to find the symbol corresponding to the address in the log file is more accurate, and the probability of finding errors is reduced.
  • the embodiment of the present disclosure after obtaining the mapping relationship between addresses and symbols, the resolved mapping relationship between addresses and symbols is sorted according to the size of the addresses; in this case, The embodiment of the present disclosure also proposes to include step S106.
  • Step S106 In response to the sequence including multiple consecutive identical addresses, retain the mapping relationship between the first address and the symbol among the multiple identical addresses, and delete the rest of the multiple identical addresses The mapping relationship between symbols and symbols.
  • the address 0x0000000000004010 appears twice, and the row numbers and column numbers corresponding to the two times are different, which will lead to ambiguity in the mapping relationship.
  • the embodiment of the present disclosure retains the previous mapping relationship (that is, retains the mapping relationship between the first address and the symbol among multiple identical addresses), and deletes the subsequent mapping relationship between the same address and the symbol. mapping relationship between them.
  • the parsing method may further include step S107: delete the mapping relation between the address and the preset error address from the mapping relation between the resolved address and the symbol .
  • S301-S303 is used to determine the mapping relationship between addresses and symbols, and the address in the source file corresponding to the symbol is determined according to the offset and the start address of the source file. If the initial address is even smaller, it proves that the mapping relationship is wrong. In order to avoid misleading symbols output by the mapping relationship, the mapping relationship with the address matching the preset wrong address is directly deleted.
  • the mapping relationship After determining the mapping relationship between each symbol and the corresponding target address range, the first address or other addresses in the symbol table, the mapping relationship needs to be stored in a preset database.
  • the preset database may include multiple storage nodes; and in the aforementioned mapping relationship, different storage nodes correspond to different address ranges.
  • step S104 may specifically include: address range, storing the mapping relationship between the first address and the corrected symbol, the mapping relationship between the target address range and the symbol, and the mapping relationship between other addresses and symbols in the symbol table to the corresponding storage node.
  • the embodiment of the present application in order to divide different address ranges and store them in corresponding storage nodes, the embodiment of the present application first sets a constant (in practical applications, the constant is set to be relatively large, for example, set to 10000 ); after obtaining the first address, the target address range or other addresses, divide the first address, the target address or other addresses by the set length to obtain the quotient, and the subscript of the address range where the storage node corresponding to the quotient is located; After the quotient is obtained, the corresponding address or the mapping relationship between the target address range and the symbol is stored in the corresponding address range, that is, stored in the corresponding storage node.
  • a constant in practical applications, the constant is set to be relatively large, for example, set to 10000 ); after obtaining the first address, the target address range or other addresses, divide the first address, the target address or other addresses by the set length to obtain the quotient, and the subscript of the address range where the storage node corresponding to the quotient is located; After the quot
  • step S105 searches the address in the log file from the database, divides the address in the log by a constant to obtain the query quotient, and then uses the query quotient
  • the query storage node is determined by comparing with the table below in the address range, and then the symbol corresponding to the query address is determined in the storage node according to a corresponding data retrieval method (such as a binary search method).
  • the database includes an in-memory database and a disk database, and searching for symbols corresponding to addresses in the log file from the database includes:
  • Fig. 2 is a flow chart of searching the corresponding point symbols of addresses in the log files from the database provided by the embodiment of the present application.
  • the preset database is set to include an in-memory database and a disk database, wherein the in-memory database adopts the database of Remote Dictionary Service (Redis, Redis), and the disk database adopts the Abase database platform ; and the mapping relationship obtained in step S104 is fully loaded in the Abase database, and partially loaded in the remote dictionary service.
  • the in-memory database adopts the database of Remote Dictionary Service (Redis, Redis)
  • the disk database adopts the Abase database platform
  • the mapping relationship obtained in step S104 is fully loaded in the Abase database, and partially loaded in the remote dictionary service.
  • searching the database for the symbol corresponding to the address in the log file in step S105 includes steps S1051-S1054.
  • S1051 Determine whether the corresponding mapping relationship is queried in the remote dictionary service according to the address in the log file; if yes, perform S1052; if not, perform S1053.
  • S1053 Determine whether the corresponding mapping relationship is found in the Abase database according to the address in the log file; if yes, execute S1052 and execute S1054.
  • the method of querying symbols according to the address of the log file provided by the embodiment of the present disclosure, firstly, query whether the corresponding mapping relationship is hit in the memory database of the remote dictionary service, so as to determine whether the corresponding symbol is found through the fast feature of the query of the remote dictionary service; And if there is no corresponding mapping relationship stored in the remote dictionary service, the Abase database will be queried; after the corresponding mapping relationship is obtained from the query in the Abase database, the symbol corresponding to the address in the log file will be determined according to the log file and the symbol will be returned.
  • the processing efficiency is improved through the feature of fast memory processing of the remote dictionary service.
  • mapping relationship stored in the memory database has not been queried within a preset time
  • set the mapping relationship in the memory database that has not been queried within a preset time to is expired, and the mapping relationship set to expire is discarded.
  • the remote dictionary service may set the corresponding mapping relationship as expired and discard the corresponding mapping relationship.
  • the method for querying symbols provided by the embodiments of the present disclosure may include step S1055 in addition to the aforementioned steps S101-S1054, and step S1055 is executed after step S1053.
  • the preset tool may be the llvm-atosl tool.
  • the llvm-atosl tool is a low level virtual machine (llvm) based open source framework and a log analysis tool that can run on a Linux system.
  • the time-consuming bottleneck of parsing may be caused in file transmission; and the method for querying symbols provided by the embodiments of the present disclosure is only used when the front-end virtual dictionary service and the mapping relationship stored in the Abase database cannot find the corresponding symbols.
  • the efficiency of concurrent execution is low, and the possibility of time-consuming parsing is also low; and when the corresponding symbols cannot be queried by using the virtual dictionary service and the Abase service, the llvm-atosl tool is used for parsing as a backup. It can avoid the problem that the mapping relationship stored in Abase is insufficient, and the corresponding symbols cannot be queried according to certain addresses.
  • the embodiment of the present disclosure also provides a symbol analysis device.
  • Fig. 3 is a schematic structural diagram of a symbol analysis device provided by an embodiment of the present disclosure.
  • the symbol analysis device 10 may be installed in the electronic device, and used to analyze and obtain corresponding symbols according to the address in the received iOS file.
  • the symbol analysis device 10 includes an analysis module 11 , a combination module 12 , a correction module 13 , a storage module 14 and a search module 15 .
  • the parsing module 11 is configured to parse from the pre-obtained symbol table the mapping relationship between the address of the source file in the operating system iOS of the Apple mobile device and the symbols recognizable by the target system.
  • the merging module 12 is configured to merge the mapping relationship between the plurality of consecutive addresses and the symbols into symbols corresponding to the target address range and the plurality of consecutive addresses when the symbols corresponding to the plurality of consecutive addresses obtained by parsing are the same.
  • the mapping relationship among them, the target address range is determined by the multiple consecutive addresses.
  • a correction module 13 configured to correct the symbol corresponding to the first address to the second symbol in the symbol table when the symbol corresponding to the first address in the symbol table matches the preset error symbol.
  • the symbol corresponding to the address, the first address refers to the address corresponding to the non-breakpoint position in the symbol table; the second address refers to the address corresponding to the breakpoint position in the symbol table, and is the same as the first
  • the address size is the closest, and the value is smaller than the address of the first address;
  • the storage module 14 is configured to store the mapping relationship between the first address and the corrected symbol, the corresponding relationship between the target address range and the symbol, and the mapping between other addresses and symbols in the symbol table Relationships are stored in a preset database.
  • the search module 15 is configured to search the database for symbols corresponding to addresses in the log file when receiving the log file sent by the iOS client.
  • the symbol analysis device 10 provided by the embodiment of the present disclosure has the following features.
  • the parsing module 11 includes a debugging information acquisition submodule and a mapping relationship acquisition submodule.
  • the debugging information acquisition submodule is used to parse from the symbol table to obtain the debugging information of the compilation unit corresponding to the address of the source file.
  • the mapping relationship obtaining submodule is used to find out the mapping relationship between the address of the source file and the symbols recognizable by the target system from the debugging information.
  • mapping relation acquisition submodule is further configured to convert the source file to After adding or subtracting the preset threshold to the address of , the debugging information is queried again.
  • the symbol analysis device 10 further includes a sorting module; the sorting module is configured to sort the mapping relationship between the resolved addresses and symbols according to the size of the addresses.
  • the symbol analysis device 10 further includes a deletion module; the deletion module is configured to retain the highest-ranked address among the multiple identical addresses in response to the sorting including multiple consecutive identical addresses
  • the mapping relationship between addresses and symbols is to delete the mapping relationships between remaining addresses and symbols among the plurality of identical addresses.
  • the deletion module is further configured to delete the mapping relationship between the address and the preset error address from the mapping relationship between addresses and symbols obtained through analysis.
  • the database includes multiple storage nodes, and different storage nodes correspond to different address ranges; correspondingly, the storage module 14 according to the first address, the target address range and the For the address range to which other addresses in the symbol table belong, the mapping relationship between the first address and the corrected symbol, the mapping relationship between the target address range and the symbol, and the other addresses and symbols in the symbol table The mapping relationship between is stored in the corresponding storage node.
  • the database includes a memory database and a disk database
  • the search module 15 searches the database for symbols corresponding to addresses in the log file, it may be configured to: according to the The address in the log file determines whether the corresponding mapping relationship is found in the memory database; if it is determined that the corresponding mapping relationship is found in the memory database according to the address in the log file, then the log file is returned The symbol corresponding to the address in the log file; loading the mapping relationship corresponding to the address in the log file into the memory database.
  • the search module 15 can also be used to: if according to the The address in the log file determines that the corresponding mapping relationship is not found in the memory database, then determines whether the corresponding mapping relationship is found in the disk database according to the address in the log file; if according to the log If the address in the file determines that the corresponding mapping relationship is found in the disk database, the symbol corresponding to the address in the log file is returned; and the mapping relationship corresponding to the address in the log file is loaded into the memory database.
  • the search module 15 can also be used to: if according to the If the address in the log file determines that the corresponding mapping relationship is not inquired in the disk database, then the symbol corresponding to the address in the log file is returned; the preset tool is used to carry out real-time symbol table according to the address in the log file Parse to obtain the mapping relationship between the address and the symbol, and return the symbol corresponding to the address in the log file.
  • the storage module 14 may also be configured to: if the mapping relationship stored in the memory database is not queried within a preset time, Set the mapping relationship that has not been queried within the time period as expired, and discard the mapping relationship that is set as expired.
  • the device provided in this embodiment is capable of executing the method in any of the above-mentioned embodiments in FIG. 1-FIG. 2 , and its execution mode and beneficial effect are similar, and details are not repeated here.
  • An embodiment of the present disclosure also provides a computer device, the computer device includes a processor and a memory, wherein a computer program is stored in the memory, and when the computer program is executed by the processor, the above-mentioned Figure 1- Figure 1 can be realized.
  • FIG. 4 is a schematic structural diagram of a computer device in an embodiment of the present disclosure.
  • the computer device 1000 in the embodiment of the present disclosure may include, but not limited to, mobile phones, notebook computers, digital broadcast receivers, PDAs (Personal Digital Assistants), PADs (Tablet Computers), PMPs (Portable Multimedia Players), vehicle-mounted terminals ( Mobile terminals such as car navigation terminals) and stationary terminals such as digital TVs, desktop computers and the like.
  • the computer device shown in FIG. 4 is only an example, and should not limit the functions and scope of use of the embodiments of the present disclosure.
  • a computer device 1000 may include a processing device (such as a central processing unit, a graphics processing unit, etc.) 1001, which may be accessed randomly according to a program stored in a read-only memory (ROM) 1002 or loaded from a storage device 1008. Various appropriate actions and processes are executed by programs in the memory (RAM) 1003 . In the RAM 1003, various programs and data necessary for the operation of the computer device 1000 are also stored.
  • the processing device 1001, ROM 1002, and RAM 1003 are connected to each other through a bus 1004.
  • An input/output (I/O) interface 1005 is also connected to the bus 1004 .
  • the following devices can be connected to the I/O interface 1005: input devices 1006 including, for example, a touch screen, touchpad, keyboard, mouse, camera, microphone, etc.; output devices 1007, including, for example, a liquid crystal display (LCD), speaker, vibrator, etc. ; a storage device 1008 including, for example, a magnetic tape, a hard disk, etc.; and a communication device 1009 .
  • the communication means 1009 may allow the computer device 1000 to perform wireless or wired communication with other devices to exchange data. While FIG. 4 shows computer device 1000 having various means, it should be understood that implementing or having all of the means shown is not a requirement. More or fewer means may alternatively be implemented or provided.
  • embodiments of the present disclosure include a computer program product, which includes a computer program carried on a non-transitory computer readable medium, where the computer program includes program code for executing the method shown in the flowchart.
  • the computer program may be downloaded and installed from a network via the communication means 1009, or from the storage means 1008, or from the ROM 1002.
  • the processing device 1001 the above-mentioned functions defined in the methods of the embodiments of the present disclosure are executed.
  • the above-mentioned computer-readable medium in the present disclosure may be a computer-readable signal medium or a computer-readable storage medium or any combination of the above two.
  • a computer readable storage medium may be, for example, but not limited to, an electrical, magnetic, optical, electromagnetic, infrared, or semiconductor system, apparatus, or device, or any combination thereof. More specific examples of computer-readable storage media may include, but are not limited to, electrical connections with one or more wires, portable computer diskettes, hard disks, random access memory (RAM), read-only memory (ROM), erasable Programmable read-only memory (EPROM or flash memory), optical fiber, portable compact disk read-only memory (CD-ROM), optical storage device, magnetic storage device, or any suitable combination of the above.
  • a computer-readable storage medium may be any tangible medium that contains or stores a program that can be used by or in conjunction with an instruction execution system, apparatus, or device.
  • a computer-readable signal medium may include a data signal propagated in baseband or as part of a carrier wave carrying computer-readable program code therein. Such propagated data signals may take many forms, including but not limited to electromagnetic signals, optical signals, or any suitable combination of the foregoing.
  • a computer-readable signal medium may also be any computer-readable medium other than a computer-readable storage medium, which can transmit, propagate, or transmit a program for use by or in conjunction with an instruction execution system, apparatus, or device .
  • Program code embodied on a computer readable medium may be transmitted by any appropriate medium, including but not limited to wires, optical cables, RF (radio frequency), etc., or any suitable combination of the above.
  • the client and the server can communicate using any currently known or future network protocols such as HTTP (HyperText Transfer Protocol, Hypertext Transfer Protocol), and can communicate with digital data in any form or medium
  • HTTP HyperText Transfer Protocol
  • the communication eg, communication network
  • Examples of communication networks include local area networks (“LANs”), wide area networks (“WANs”), internetworks (e.g., the Internet), and peer-to-peer networks (e.g., ad hoc peer-to-peer networks), as well as any currently known or future developed network of.
  • the above-mentioned computer-readable medium may be included in the above-mentioned computer device, or may exist independently without being incorporated into the computer device.
  • the above-mentioned computer-readable medium carries one or more programs, and when the above-mentioned one or more programs are executed by the computer device, the computer device: obtains the source file in the Apple mobile device operating system iOS by parsing the pre-obtained symbol table The mapping relationship between addresses and symbols recognizable by the target system; in response to the parsing of multiple continuous addresses corresponding to the same symbols, merging the mapping relationship between the multiple continuous addresses and symbols into the target address range and the described A mapping relationship between symbols corresponding to a plurality of consecutive addresses, the target address range is determined by the plurality of consecutive addresses; in response to the parsing obtained that the symbol corresponding to the first address in the symbol table corresponds to a preset error symbol Match, correct the symbol corresponding to the first address to the symbol corresponding to the second address in the symbol table, the first address refers to the address corresponding to the non-breakpoint position in the symbol table; The second address refers to the address corresponding to the breakpoint position in the symbol table, which is the closest to the first address
  • Computer program code for carrying out operations of the present disclosure may be written in one or more programming languages, or combinations thereof, including but not limited to object-oriented programming languages—such as Java, Smalltalk, C++, and Includes conventional procedural programming languages - such as the "C" language or similar programming languages.
  • the program code may execute entirely on the user's computer, partly on the user's computer, as a stand-alone software package, partly on the user's computer and partly on a remote computer or entirely on the remote computer or server.
  • the remote computer can be connected to the user computer through any kind of network, including a local area network (LAN) or a wide area network (WAN), or it can be connected to an external computer (such as through an Internet service provider). Internet connection).
  • LAN local area network
  • WAN wide area network
  • Internet service provider such as AT&T, MCI, Sprint, EarthLink, MSN, GTE, etc.
  • each block in a flowchart or block diagram may represent a module, program segment, or portion of code that contains one or more logical functions for implementing specified executable instructions.
  • the functions noted in the block may occur out of the order noted in the figures. For example, two blocks shown in succession may, in fact, be executed substantially concurrently, or they may sometimes be executed in the reverse order, depending upon the functionality involved.
  • each block of the block diagrams and/or flowchart illustrations, and combinations of blocks in the block diagrams and/or flowchart illustrations can be implemented by a dedicated hardware-based system that performs the specified functions or operations , or may be implemented by a combination of dedicated hardware and computer instructions.
  • the units involved in the embodiments described in the present disclosure may be implemented by software or by hardware. Wherein, the name of a unit does not constitute a limitation of the unit itself under certain circumstances.
  • FPGAs Field Programmable Gate Arrays
  • ASICs Application Specific Integrated Circuits
  • ASSPs Application Specific Standard Products
  • SOCs System on Chips
  • CPLD Complex Programmable Logical device
  • a machine-readable medium may be a tangible medium that may contain or store a program for use by or in conjunction with an instruction execution system, apparatus, or device.
  • a machine-readable medium may be a machine-readable signal medium or a machine-readable storage medium.
  • a machine-readable medium may include, but is not limited to, electronic, magnetic, optical, electromagnetic, infrared, or semiconductor systems, apparatus, or devices, or any suitable combination of the foregoing.
  • machine-readable storage media would include one or more wire-based electrical connections, portable computer discs, hard drives, random access memory (RAM), read only memory (ROM), erasable programmable read only memory (EPROM or flash memory), optical fiber, compact disk read only memory (CD-ROM), optical storage, magnetic storage, or any suitable combination of the foregoing.
  • RAM random access memory
  • ROM read only memory
  • EPROM or flash memory erasable programmable read only memory
  • CD-ROM compact disk read only memory
  • magnetic storage or any suitable combination of the foregoing.
  • An embodiment of the present disclosure also provides a computer-readable storage medium, wherein a computer program is stored in the storage medium, and when the computer program is executed by a processor, the method in any one of the above-mentioned Figures 1-2 can be implemented. Its execution method and beneficial effect are similar, and will not be repeated here.

Abstract

本公开涉及一种符号解析方法、装置、设备及存储介质,方法包括:从符号表解析得到源文件的地址与符号之间的映射关系;若多个连续地址对应的符号相同,将多个连续地址与符号之间的映射关系进行合并;响应于解析得到符号表中的第一地址对应的符号与预设的错误符号相匹配,将第一地址对应的符号校正为符号表中的第二地址对应的符号,第一地址是指符号表中对应于非断点位置的地址;将第一地址与校正后的符号之间的映射关系、目标地址范围与对应符号之间的映射关系,以及符号表中其它地址与符号之间的映射关系存储在预设的数据库中。

Description

符号解析方法、装置、设备及存储介质
本公开要求于2021年05月24日提交的,申请名称为“符号解析方法、装置、设备及存储介质”的、中国专利申请号为“202110564299.3”的优先权,该中国专利申请的全部内容通过引用结合在本公开中。
技术领域
本公开实施例涉及计算机技术领域,尤其涉及一种符号解析方法、装置、设备及存储介质。
背景技术
在苹果移动设备操作系统(iPhone Operating System,简称iOS))中,应用程序(Application,简称APP)的卡顿、卡死等问题可以通过日志上报到相应的监控平台,以使监控平台在将日志中的地址映射成相应的符号后,对应用程序的问题进行分析和处理。其中,如何提高符号的解析效率和准确性是符号解析过程中长期存在的问题。
发明内容
为了解决上述技术问题或者至少部分地解决上述技术问题,本公开实施例提供了一种符号解析方法、装置、设备及存储介质。
第一方面,本公开提供一种符号解析方法,包括:
从预先得到的符号表解析得到苹果移动设备操作系统iOS中源文件的地址与目标系统可识别的符号之间的映射关系;
响应于解析得到的多个连续地址对应的符号相同,将所述多个连续地址与符号之间的映射关系合并为目标地址范围与所述多个连续地址对应的符号之间的映射关系,所述目标地址范围由所述多个连续地址确定;
响应于解析得到所述符号表中的第一地址对应的符号与预设的错误符号相匹配,则将所述第一地址对应的符号校正为所述符号表中的第二地址对应的符号,所述第一地址是指所述符号表中对应于非断点位置的地址;所述第二地址是指所述符号表中对应于断点位置,且与所述第一地址大小最接近,数值小于所述第一地址的地址;
将所述第一地址与校正后的符号之间的映射关系、所述目标地址范围与对应符号之间的映射关系,以及所述符号表中其它地址与符号之间的映射关系存储在预设的数据库中;
在接收到iOS客户端发送的日志文件时,从所述数据库中查找所述日志文件中的地址对应的符号。
第二方面,本公开提供一种符号解析装置,包括:
解析模块,用于从预先得到的符号表中解析得到苹果移动设备操作系统iOS中的源 文件的地址与目标系统可识别的符号之间的映射关系;
合并模块,用于在解析得到的多个连续地址对应的符号相同时,将所述多个连续地址与符号之间的映射关系合并为目标地址范围与所述多个连续地址对应的符号之间的映射关系,所述目标地址范围由所述多个连续地址确定得到;
校正模块,用于在解析得到所述符号表中的第一地址对应的符号与预设的错误符号相匹配时,将所述第一地址对应的符号校正为所述符号表中的第二地址对应的符号,所述第一地址是指所述符号表中对应于非断点位置的地址;所述第二地址是指所述符号表中对应于断点位置,且与所述第一地址大小最接近,数值小于所述第一地址的地址;
存储模块,用于将所述第一地址与校正后的符号之间的映射关系、所述目标地址范围与符号之间的对应关系,以及所述符号表中其它地址与符号之间的映射关系存储在预设的数据库中;
查找模块,用于在接收到iOS客户端发送的日志文件时,从所述数据库中查找所述日志文件中的地址对应的符号。
第三方面,本公开提供一种计算机设备,包括存储器和处理器,其中,所述存储器中存储有计算机程序,当所述计算机程序被所述处理器执行时,实现第一方面提供的符号解析方法。
第四方面,本公开提供一种计算机可读存储介质,所述存储介质存储有计算机程序,当所述计算机程序被处理器执行时,使得处理器实现第一方面提供的符号解析方法。
本公开实施例提供的技术方案与现有技术相比具有如下优点:
本公开实施例中从符号表中预解析出地址和符号的映射关系,并且能够对预解析出的映射关系进行如下的优化处理。
(1)映射关系中连续地址对应同一符号的映射关系整合为一个目标地址范围地址与对应符号的映射关系,使得映射关系数量降低,因此可以降低映射关系存储所需要的存储资源;由于映射关系的数量减少,后续基于iOS客户端发送的日志文件时,可以加快查询步骤,继而可以提高针对日志文件中符号解析的速度和效率。
(3)在确定映射关系中符号表与预设错误符号匹配时,校正符号表至正确符号,使得使用此映射关系查找日志文件中地址对应的符号更为准确,减少了查找错误的概率。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。
为了更清楚地说明本公开实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而 言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本公开实施例提供的一种符号解析方法的流程图;
图2是本公开实施例提供的从数据库中查找日志文件中地址对应点符号的流程图;
图3是本公开实施例提供的一种符号解析装置的结构示意图;
图4是本公开实施例中的一种计算机设备的结构示意图。
具体实施方式
为了能够更清楚地理解本公开的上述目的、特征和优点,下面将对本公开的方案进行进一步描述。需要说明的是,在不冲突的情况下,本公开的实施例及实施例中的特征可以相互组合。
在下面的描述中阐述了很多具体细节以便于充分理解本公开,但本公开还可以采用其他不同于在此描述的方式来实施;显然,说明书中的实施例只是本公开的一部分实施例,而不是全部的实施例。
图1是本公开实施例提供的一种符号解析方法的流程图,该方法可以由一种计算机设备执行;计算机设备可以示例性的理解为笔记本电脑、台式机、云端服务器、服务器集群等具有计算和处理能力的设备。
如图1所示,本公开实施例提供的符号解析方法包括步骤S101-S105。
S101:从预先得到的符号表解析得到苹果移动设备操作系统iOS中源文件的地址与目标系统可识别的符号之间的映射关系。
在本公开施例中:苹果移动操作系统iOS中的源文件可以是iOS应用程序代码中某个方法或函数的文件;目标系统可以是iOS系统或者除iOS以外的其他任意系统,比如安卓等。
本公开实施例中所称的符号可以是源文件在iOS应用程序代码中的文件名、行号,以及调用该源文件的方法的方法名等。
在本公开实施例的一种实施方式中,符号表中可以包括源文件的地址与源文件对应的编译单元的调试信息之间的映射关系,调试信息中包括源文件地址与目标系统可识别的符号之间的关系。
在此情况下,步骤S101可以细化为步骤S1011和S1012。
S1011:从符号表中解析得到源文件中地址对应的编译单元的调试信息;
S1012:从调试信息中,查找到源文件地址与目标系统中可识别符号之间的映射关系。
具体的,在本公开实施例的一种实施方式中,符号表可以具体为DWARF(Debugging with Attributed Record Formats)格式的文件。
DWARF是一种调制信息格式,其为MH_DSYM类型文件的一部分,可以应用于源码级别的调试。DWARF可以包括与源文件的地址对应的编译单元的信息,编译单元的信息中包 括编译单元的调试信息在源代码信息段的进口(The Debugging Information Entry,简称DIE)中的偏移,编译单元的调试信息中包括与源文件的地址对应的方法的调试信息进口,以及与源文件的地址对应的文件名和行号。
下面是一种方法的调试信息的示例:
0x0049622c:DW_TAG_subprogram
DW_AT_low_pc(0x000000000030057c)
DW_AT_high_pc(0x0000000000300690)
DW_AT_frame_base(DW_OP_reg29W29)
DW_AT_object_pointer(0x0049629e)
DW_AT_name("+[SSZipArchive_dateWithMSD
OSFormat:]")
DW_AT_decl_file("/var/folders/03/2g9r4cnj3kqb5605581
m1nf40000gn/T/cocoapods-uclardjg/Pods/SSZipArchive/SSZipArchive/SSZipArchive.m")
DW_AT_decl_line(965)
DW_AT_prototyped(0x01)
DW_AT_type(0x00498104"NSDate*")
DW_AT_APPLE_optimized(0x01)
上述方法的调试信息的示例中几个关键属性的涵义为如下:
DW_AT_low_pc和DW_AT_high_pc分别代表方法函数的起始/结束计算机(简称pc)地址;
DW_AT_name描述方法函数的名字;
DW_AT_decl_file描述方法函数对应的声明文件;
DW_AT_decl_file描述方法函数的声明信息在声明文件中的位置;
DW_AT_type描述的是方法函数返回值的类型。
下面是符号表中存储的一种编译单元的信息的示例。
DW_AT_produce("Apple LLVM version 10.0.0(clang-
1000.11.45.5)")
DW_AT_language(DW_LANG_ObjC)
DW_AT_name("/var/folders/03/2g9r4cnj3kqb5605581m1nf40000gn/T/cocoapods-uclardjg/Pods/SSZipArchive/SSZipArchive/SSZipArchive.m")
DW_AT_stmt_list(0x001e8f31)
DW_AT_comp_dir("/private/var/folders/03/2g9r4cnj3kqb56 05581m1nf40000gn/T/cocoapods-uclardjg/Pods")
DW_AT_APPLE_optimized(0x01)
DW_AT_APPLE_major_runtime_vers(0x02)
DW_AT_low_pc(0x00000000002fc8e8)
DW_AT_high_pc(0x0000000000300828)
其中几个关键属性的涵义如下:
DW_AT_language描述当前编译单元使用的编程语言;
DW_AT_stmt_list描述当前编译单元的信息在源文件代码信息段即debug_line section中的偏移;
DW_AT_low_pc和DW_AT_high_pc代表编译单元对应的源文件的地址。
本公开实施例中,可以根据从符号表中解析出的源文件的地址从DWARF文件中的debug_info部分中确定出对应的编译单元的信息,然后根据编译单元的信息,确定编译单元的调试信息在源代码信息段中的偏移,根据偏移得到编译单元的调试信息,根据编译单元的调试信息从对应的方法的调试信息进口查找获得源文件的地址对应的方法名,并在编译单元的调试信息中,查找获得源文件的地址对应的文件名和行号。
本实施例步骤S101查询到源文件的地址和目标系统可识别字符之间的映射关系之后,还可以包括步骤S102-S104。
S102:响应于解析得到的多个连续地址对应的符号相同,将所述多个连续地址与符号之间的映射关系合并为目标地址范围与所述多个连续地址对应的符号之间的映射关系。
可选的,从符号表中解析得到源文件的地址与目标系统可识别的符号之间的对应关系后,可以按照地址的大小对解析得到的地址与符号之间的映射关系进行排序。
进一步的,基于该排序对各地址对应的符号进行判断,如果解析到的映射关系中存在多个连续地址对应的符号相同,则对该多个连续地址与符号之间的映射关系进行合并,得到目标地址范围与符号之间的映射关系,其中,目标地址范围是指上述多个连续地址合并后得到的地址范围,目标地址范围对应的符号为该多个连续地址对应的符号。
可以想到,如果在多个连续地址对应的符号相同的情况下将多个连续地址与相同符号的映射关系合并为目标地址范围与符号之间的映射关系,可以降低需要存储的映射关系的数据量。
S103:响应于解析得到所述符号表中的第一地址对应的符号与预设的错误符号相匹配,则将所述第一地址对应的符号校正为所述符号表中的第二地址对应的符号。
本公开实施例中,第一地址是指所述符号表中对应于非断点位置的地址;所述第二地址是指所述符号表中对应于断点位置,且与所述第一地址大小最接近,数值小于所述第一地址 的地址。
例如,下表是一个地址和符号之间的映射关系表。如下表所示,其中针对地址0x0000000000004080,其对应的行号是第0行;而源文件在应用程序源代码中的行号不可能是0行,这与实际情况不符,因此,需要对0x0000000000004080对应的行号进行校正。
具体的,表中标签is_stmt用于表征源代码中断点位置所在的行,如上表所示,地址0x0000000000004070对应断点位置,且是小于0x0000000000004080的地址中与0x0000000000004080大小最接近的地址,由于一个断点位置只能标记一行,那么上表中0x0000000000004070对应的内容与0x0000000000004080(对应于非断点位置)对应的内容应该位于应用程序源代码中的同一代码行上,因此可以将0x0000000000004080校正为70。
Figure PCTCN2022083583-appb-000001
本公开实施例的一个应用中,步骤S103是在步骤S102执行后执行,也就是首先采用步骤S102建立目标地址范围与所述多个连续地址对应的相同符号之间的映射关系后,再去对符号表中错误的映射关系进行修正。
在本公开实施例的其他应用中,步骤S103也可以在步骤S102之前执行,也就是首先对符号表中错误的映射关系进行修正,再建立目标地址范围与多个连续地址对应的相同符号之间的映射关系。
S104:将所述第一地址与校正后的符号之间的映射关系、所述目标地址范围与对应符号之间的映射关系,以及所述符号表中其它地址与符号之间的映射关系存储在预设的数据库中。
本公开实施例需要完成对符号表的全量解析,并将全量解析后的结果存储值预设的数据库中。
存储全量解析结果至预设的数据库中,除了需要包括采用前述步骤S102确定目标地址范围和对应符号之前的映射关系,采用前述步骤S103确定的第一地址与校正后符号之间的映射关系外,还需要考虑并不符合步骤S102和S103判断和操作步骤的剩余地址与符号之间的映射关系存储在预设数据库中。
本公开实施例中,预设的数据库可以是各种可能的数据库;例如,在一个应用中,其可 以为持久化的数据库,也就是数据库可以采用硬盘存储方式存储的数据库;在本申请实施例的另一应用中,预设的数据库还可以是在内存中建立的非持久化数据库。
S105:在接收到iOS客户端发送的日志文件时,从所述数据库中查找所述日志文件中的地址对应的符号。
本公开实施例具体应用中,iOS客户端在运行源文件(也就是可执行程序)时,因为地址中对应的目标系统在编程过程中出现的bug问题,可执行程序可能出现闪退、卡死、卡顿等异常情况;在出现这些异常情况时,iOS客户端将出现问题的源文件状态进行记录并形成日志文件,并发送到用于处理日志文件的终端。
处理日志文件的客户端或者在接收到客户端发送的日志文件后,查找日志文件中的地址,根据地址查找数据库中存储的映射关系,确定对应的符号。
本公开实施例的一些具体应用中,日志文件中的地址包括源程序在iOS客户端内存堆栈中的堆栈地址stack_address和加载地址load_address(也就是源程序在iOS客户端内存堆栈中的起始地址),而为了能够对应数据库中存储的映射关系的文件地址file_address,需要按照公式file_address=stack_address-load_address。
在本公开实施例的另外一些具体应用中,iOS客户端操作系统出于安全因素,采用了地址空间布局随机化技术(Address Space Layout Randomization(ASLR),在将源程序加载到内存是会做随机偏移slide;而为了能够得到文件地址file_address,除了考虑前述的堆栈地址stack_address和加载地址load_address外,还需要考虑随机偏移slide。为了基于随机偏移slide获得文件地址file_address,本公开实施例中,在获得iOS客户端发送而来的日志文件后,除了获取前述的文件堆栈地址stack_address和加载地址load_address外,还获取基于随机偏移slide确定的vm_address,则文件地址file_address=stack_address-load_address+vm_address。
采用本公开实施例提供的符号解析方法,在从符号表得到的源文件地址和目标系统可识别符号的映射关系后,并没有直接将映射关系存储在预设的数据库中,以用于后续步骤S105对客户端发送的日志文件的解析;而是做了如下的操作:(1)将映射关系中连续地址对应同一符号的映射关系整合为一个目标地址范围地址与对应符号的映射关系;(2)在确定映射关系中符号表与预设的错误符号匹配时,校正错误符号至正确符号。
采用本公开实施例提供的符号解析方法,可以达到如下的技术效果:(1)映射关系中连续地址对应同一符号的映射关系整合为一个目标地址范围地址与对应符号的映射关系,使得映射关系数量降低,因此可以降低映射关系存储所需要的存储资源;由于映射关系的数量减少,后续在执行步骤S105时可以加快查询步骤,继而可以提高针对日志文件中符号解析的速度和效率;(2)在确定映射关系中符号表与预设错误符号匹配时,校正符号表至正确符号, 使得使用此映射关系查找日志文件中地址对应的符号更为准确,减少了查找错误的概率。
如前文所述,在本公开实施例的一些应用中,在获取地址和符号的映射关系后,还按照地址的大小对解析得到的地址与符号之间的映射关系进行排序;在此情况下,本公开实施例还提议包括步骤S106。
步骤S106:响应于所述排序中包括连续多个相同的地址,则保留所述多个相同的地址中最前的地址与符号之间的映射关系,删除所述多个相同的地址中其余的地址与符号之间的映射关系。
如下表,其中地址为0x0000000000004010出现了两次,并且两次对应行号和列号并不相同,此时将导致映射关系有歧义。为了避免映射关系有歧义,本公开实施例中保留在前的一个映射关系(也就是保留多个相同地址中最前的地址与符号之间的映射关系),而删除再后的相同地址与符号之间的映射关系。
Address Line Column Flags
0x0000000000004000 62 0 is_stmt
0x0000000000004010 63 12 is_stmt
0x0000000000004010 64 9  
在本公开实施例的一些应用中,解析方法在执行步骤S101后,还可以包括步骤S107:从解析得到的地址与符号之间的映射关系中删除地址与预设的错误地址相匹配的映射关系。
例如,在本公开的一个实施例中,采用了S301-S303执行相应的确定地址和符号的映射关系中,根据偏移量和源文件的起始地址确定符号对应的源文件中的地址比起始地址还要小,则证明此映射关系错误,为了避免此映射关系输出的符号造成错误误导,直接删除与地址与预设的错误地址相匹配的映射关系。
在确定各个符号与对应的目标地址范围、第一地址或者符号表中其他地址的映射关系后,需要将映射关系存储至预设的数据库中。在本公开实施例的一个具体应用中,预设的数据库可以包括多个存储节点;而前述的映射关系中,不同的存储节点对应不同的地址区间。
对应的,在存储节点为多个,并且不同的存储对应不同的地址区间的情况下,步骤S104具体可以包括:根据所述第一地址、所述目标地址范围以及所述符号表中其它地址所属的地址区间,将所述第一地址与校正后的符号之间的映射关系、所述目标地址范围与符号之间的映射关系,以及所述符号表中其它地址与符号之间的映射关系存储到相应的存储节点中。
例如,在本公开的一个实施例中,为了将不同的地址区间进行划分并存储在对应的存储节点中,本申请实施例首先设置一个常数(实际应用中,常数设置较大,例如设置为10000);在得到第一地址、目标地址范围或者其他地址后,采用第一地址、目标地址或者其他地址除以设定长度而得到商,此商对应的存储节点所处的地址区间的下标;在得到此商后,将对应 地址或者目标地址区间和符号之间的映射关系存储到相应的地址区间内,也就是存储到相应的存储节点中。
对应前述的步骤S104中,步骤S105在接收到客户端发送而来的日志文件后,从数据库中查找日志文件中地址,采用日志中地址与常数相除而得到查询商值,随后利用查询商值与地址区间的下表进行比较而确定查询的存储节点,随后在此存储节点中按照相应的数据检索方法(例如二分查找法)确定查询地址对应的符号。
在本公开实施例的一些应用中,所述数据库包括内存数据库和磁盘数据库,所述从所述数据库中查找所述日志文件中的地址对应的符号,包括:
根据所述日志文件中的地址确定是否在所述内存数据库中查询到对应的映射关系;
若根据所述日志文件中的地址确定在所述内存数据库中查询到对应的映射关系,则返回所述日志文件中地址对应的符号;
将与所述日志文件中地址对应的映射关系加载至所述内存数据库中。
在本公开实施例的一些应用中,在所述根据所述日志文件中的地址确定是否在所述内存数据库中查询到对应的映射关系之后,还包括:
若根据所述日志文件中的地址确定在所述内存数据库中没有查询到对应的映射关系,则根据所述日志文件中的地址确定是否在所述磁盘数据库中查询到对应的映射关系;
若根据所述日志文件中的地址确定在所述磁盘数据库中查询到对应的映射关系,则返回所述日志文件中地址对应的符号;
将与所述日志文件中地址对应的映射关系加载至所述内存数据库中。
图2是本申请实施例提供的从数据库中查找日志文件中地址对应点符号的流程图。如图2所示,本公开实施例中,预设数据库设置成为包括内存数据库和磁盘数据库,其中内存数据库采用了远程字典服务(Remote Dictionary Server,Redis)这一数据库,磁盘数据库采用了Abase数据库平台;并且步骤S104中的得到的映射关系被全量地加载在Abase数据库,部分被加载在了远程字典服务中。
本申请实施例中,步骤S105中从所述数据库中查找所述日志文件中的地址对应的符号包括步骤S1051-S1054。
S1051:根据日志文件中的地址确定是否在远程字典服务中查询到对应的映射关系;如果是,执行S1052;如果否,执行S1053。
S1052:返回日志文件中地址对应的符号。
S1053:根据日志文件中的地址确定是否在Abase数据库中查询到对应的映射关系;如果是,执行S1052,以及执行S1054。
S1054:将与日志文件中地址对应的映射关系加载至远程字典服务中。
本公开实施例提供的根据日志文件地址查询符号的方法,首先在远程字典服务这一内存数据库查询是否命中对应的映射关系,以通过远程字典服务查询快速的特性,确定是否查找到对应的符号;而如果远程字典服务中没有存储对应的映射关系,则将查询Abase数据库中;在Abase数据库中查询得到对应的映射关系后,则根据日志文件确定日志文件中地址对应的符号并返回符号。
本公开实施例中,在Abase数据库中查询到相应的映射关系后,则表明相应的映射关系在未来被查询到的可能性较大,因此可以将相应的映射关系从硬盘数据库Abase写入到内存数据库远程字典服务中,以通过远程字典服务内存处理速度快的特性提高处理效率。
在本公开实施例的一些应用中,若所述内存数据库中存储的映射关系在预设时间内没有被查询到,则将所述内存数据库中在预设时间内没有被查询到的映射关系设置为过期,并丢弃所述设置为过期的映射关系。
在本公开实施例具体应用中,如果远程字典服务中存储的映射关系在一定时间内没有被命中,远程字典服务可以设置相应的映射关系为过期而丢弃相应的映射关系。
在本公开实施例的一些应用中,在所述根据所述日志文件中的地址确定是否在所述磁盘数据库中查询到对应的映射关系之后,还包括:
若根据所述日志文件中的地址确定在所述磁盘数据库中没有查询到对应的映射关系,则返回所述日志文件中地址对应的符号;
采用预设工具根据所述日志文件中的地址对符号表进行实时解析,得到地址与符号之间映射关系,并返回所述日志文件中地址对应的符号。
本公开实施例提供的查询符号的方法除了包括前述的步骤S101-S1054外,还可以包括步骤S1055,步骤S1055在步骤S1053之后执行。
S1055:在根据日志文件中的地址确定Abase数据库中没有查询到对应的映射关系后,采用llvm-atosl工具根据日志文件中的地址对符号表进行实时解析,得到地址与符号之间映射关系;随后,返回执行S1052。
例如,预设工具可以为llvm-atosl工具。llvm-atosl工具提是基于开源框架的低级虚拟机(low level Virtual Machine,llvm)改造的可以在Linux系统运行的日志解析工具,其需要依赖符号表文件做实时解析,因此其在系统高并发大文件传输中可能造成解析耗时的瓶颈;而本公开实施例提供的查询符号的方法,仅是在前端采用虚拟字典服务和Abase数据库中存储的映射关系均无法查到对应的符号的情况下才执行,其并发执行的效率较低,出现解析耗时的可能性也较低;而在采用虚拟字典服务和Abase服务均无法查询到对应的符号的情况下采用llvm-atosl工具进行解析作为后备,可以避免Abase中存储的映射关系不足,无法根据某些地址查询到对应符号的问题。
除了提供前述的提供的符号解析方法外,本公开实施例还提供一种符号解析装置。
图3是本公开实施例提供的一种符号解析装置的结构示意图。在本公开实施例中,符号解析装置10可以设置与电子设备内,用于根据接收到的iOS文件中的地址,解析得到对应的符号。
如图3所示,符号解析装置10包括解析模块11、合并模块12、校正模块13、存储模块14和查找模块15。
解析模块11,用于从预先得到的符号表中解析得到苹果移动设备操作系统iOS中的源文件的地址与目标系统可识别的符号之间的映射关系。
合并模块12,用于在解析得到的多个连续地址对应的符号相同时,将所述多个连续地址与符号之间的映射关系合并为目标地址范围与所述多个连续地址对应的符号之间的映射关系,所述目标地址范围由所述多个连续地址确定得到。
校正模块13,用于在解析得到所述符号表中的第一地址对应的符号与预设的错误符号相匹配时,将所述第一地址对应的符号校正为所述符号表中的第二地址对应的符号,所述第一地址是指所述符号表中对应于非断点位置的地址;所述第二地址是指所述符号表中对应于断点位置,且与所述第一地址大小最接近,数值小于所述第一地址的地址;
存储模块14,用于将所述第一地址与校正后的符号之间的映射关系、所述目标地址范围与符号之间的对应关系,以及所述符号表中其它地址与符号之间的映射关系存储在预设的数据库中。
查找模块15,用于在接收到iOS客户端发送的日志文件时,从所述数据库中查找所述日志文件中的地址对应的符号。
采用本公开实施例提供的符号解析装置10,具有以下。
在本公开实施例的一些应用中,解析模块11包括调试信息获取子模块和映射关系获取子模块。
调试信息获取子模块用于从所述符号表中解析得到所述源文件的地址对应的编译单元的调试信息。
映射关系获取子模块用于从所述调试信息中,查找得到所述源文件的地址与目标系统可识别的符号之间的映射关系。
在本公开实施例的一些应用中,映射关系获取子模块还还用于响应于未从所述符号表中解析得到所述源文件的地址对应的编译单元的调试信息,则将所述源文件的地址加上或减去预设阈值后,重新查询所述调试信息。
在本公开实施例的一些应用中,符号解析装置10还包括排序模块;排序模块用于按照地址的大小对解析得到的地址与符号之间的映射关系进行排序。
在本公开实施例的一些应用中,符号解析装置10还包括删除模块;删除模块用于响应于所述排序中包括连续多个相同的地址,则保留所述多个相同的地址中排序最高的地址与符号之间的映射关系,删除所述多个相同的地址中其余的地址与符号之间的映射关系。
在本公开实施例的一些应用中,删除模块还用于从解析得到的地址与符号之间的映射关系中删除地址与预设的错误地址相匹配的映射关系。
在本公开实施例的一些应用中,数据库包括多个存储节点,不同存储节点对应于不同的地址区间;对应的,所述存储模块14根据所述第一地址、所述目标地址范围以及所述符号表中其它地址所属的地址区间,将所述第一地址与校正后的符号之间的映射关系、所述目标地址范围与符号之间的映射关系,以及所述符号表中其它地址与符号之间的映射关系存储到相应的存储节点中。
在本公开实施例的一些应用中,所述数据库包括内存数据库和磁盘数据库,所述查找模块15在从所述数据库中查找所述日志文件中的地址对应的符号时,可以用于:根据所述日志文件中的地址确定是否在所述内存数据库中查询到对应的映射关系;若根据所述日志文件中的地址确定在所述内存数据库中查询到对应的映射关系,则返回所述日志文件中地址对应的符号;将与所述日志文件中地址对应的映射关系加载至所述内存数据库中。
在本公开实施例的一些应用中,所述查找模块15在所述根据所述日志文件中的地址确定是否在所述内存数据库中查询到对应的映射关系之后,还可以用于:若根据所述日志文件中的地址确定在所述内存数据库中没有查询到对应的映射关系,则根据所述日志文件中的地址确定是否在所述磁盘数据库中查询到对应的映射关系;若根据所述日志文件中的地址确定在所述磁盘数据库中查询到对应的映射关系,则返回所述日志文件中地址对应的符号;将与所述日志文件中地址对应的映射关系加载至所述内存数据库中。
在本公开实施例的一些应用中,所述查找模块15在所述根据所述日志文件中的地址确定是否在所述磁盘数据库中查询到对应的映射关系之后,还可以用于:若根据所述日志文件中的地址确定在所述磁盘数据库中没有查询到对应的映射关系,则返回所述日志文件中地址对应的符号;采用预设工具根据所述日志文件中的地址对符号表进行实时解析,得到地址与符号之间映射关系,并返回所述日志文件中地址对应的符号。
在本公开实施例的一些应用中,所述存储模块14,还可以用于:若所述内存数据库中存储的映射关系在预设时间内没有被查询到,则将所述内存数据库中在预设时间内没有被查询到的映射关系设置为过期,并丢弃所述设置为过期的映射关系。
本实施例提供的装置能够执行上述图1-图2中任一实施例的方法,其执行方式和有益效果类似,在这里不再赘述。
本公开实施例还提供一种计算机设备,该计算机设备包括处理器和存储器,其中,所述 存储器中存储有计算机程序,当所述计算机程序被所述处理器执行时可以实现上述图1-图2中任一实施例的方法。
示例的,图4是本公开实施例中的一种计算机设备的结构示意图。下面具体参考图4,其示出了适于用来实现本公开实施例中的计算机设备1000的结构示意图。本公开实施例中的计算机设备1000可以包括但不限于诸如移动电话、笔记本电脑、数字广播接收器、PDA(个人数字助理)、PAD(平板电脑)、PMP(便携式多媒体播放器)、车载终端(例如车载导航终端)等等的移动终端以及诸如数字TV、台式计算机等等的固定终端。图4示出的计算机设备仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
如图4所示,计算机设备1000可以包括处理装置(例如中央处理器、图形处理器等)1001,其可以根据存储在只读存储器(ROM)1002中的程序或者从存储装置1008加载到随机访问存储器(RAM)1003中的程序而执行各种适当的动作和处理。在RAM 1003中,还存储有计算机设备1000操作所需的各种程序和数据。处理装置1001、ROM 1002以及RAM1003通过总线1004彼此相连。输入/输出(I/O)接口1005也连接至总线1004。
通常,以下装置可以连接至I/O接口1005:包括例如触摸屏、触摸板、键盘、鼠标、摄像头、麦克风等的输入装置1006;包括例如液晶显示器(LCD)、扬声器、振动器等的输出装置1007;包括例如磁带、硬盘等的存储装置1008;以及通信装置1009。通信装置1009可以允许计算机设备1000与其他设备进行无线或有线通信以交换数据。虽然图4示出了具有各种装置的计算机设备1000,但是应理解的是,并不要求实施或具备所有示出的装置。可以替代地实施或具备更多或更少的装置。
特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在非暂态计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信装置1009从网络上被下载和安装,或者从存储装置1008被安装,或者从ROM 1002被安装。在该计算机程序被处理装置1001执行时,执行本公开实施例的方法中限定的上述功能。
需要说明的是,本公开上述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或 存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本公开中,计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读信号介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:电线、光缆、RF(射频)等等,或者上述的任意合适的组合。
在一些实施方式中,客户端、服务器可以利用诸如HTTP(HyperText Transfer Protocol,超文本传输协议)之类的任何当前已知或未来研发的网络协议进行通信,并且可以与任意形式或介质的数字数据通信(例如,通信网络)互连。通信网络的示例包括局域网(“LAN”),广域网(“WAN”),网际网(例如,互联网)以及端对端网络(例如,ad hoc端对端网络),以及任何当前已知或未来研发的网络。
上述计算机可读介质可以是上述计算机设备中所包含的;也可以是单独存在,而未装配入该计算机设备中。
上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被该计算机设备执行时,使得该计算机设备:从预先得到的符号表解析得到苹果移动设备操作系统iOS中源文件的地址与目标系统可识别的符号之间的映射关系;响应于解析得到的多个连续地址对应的符号相同,将所述多个连续地址与符号之间的映射关系合并为目标地址范围与所述多个连续地址对应的符号之间的映射关系,所述目标地址范围由所述多个连续地址确定;响应于解析得到所述符号表中的第一地址对应的符号与预设的错误符号相匹配,则将所述第一地址对应的符号校正为所述符号表中的第二地址对应的符号,所述第一地址是指所述符号表中对应于非断点位置的地址;所述第二地址是指所述符号表中对应于断点位置,且与所述第一地址大小最接近,数值小于所述第一地址的地址;将所述第一地址与校正后的符号之间的映射关系、所述目标地址范围与对应符号之间的映射关系,以及所述符号表中其它地址与符号之间的映射关系存储在预设的数据库中;在接收到iOS客户端发送的日志文件时,从所述数据库中查找所述日志文件中的地址对应的符号。
可以以一种或多种程序设计语言或其组合来编写用于执行本公开的操作的计算机程序代码,上述程序设计语言包括但不限于面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及 远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本公开实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现。其中,单元的名称在某种情况下并不构成对该单元本身的限定。
本文中以上描述的功能可以至少部分地由一个或多个硬件逻辑部件来执行。例如,非限制性地,可以使用的示范类型的硬件逻辑部件包括:现场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、片上系统(SOC)、复杂可编程逻辑设备(CPLD)等等。
在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
本公开实施例还提供一种计算机可读存储介质,所述存储介质中存储有计算机程序,当所述计算机程序被处理器执行时可以实现上述图1-图2中任一实施例的方法,其执行方式和有益效果类似,在这里不再赘述。
需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排 他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述仅是本公开的具体实施方式,使本领域技术人员能够理解或实现本公开。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本公开的精神或范围的情况下,在其它实施例中实现。因此,本公开将不会被限制于本文所述的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

Claims (20)

  1. 一种符号解析方法,其包括:
    从预先得到的符号表解析得到苹果移动设备操作系统iOS中源文件的地址与目标系统可识别的符号之间的映射关系;
    响应于解析得到的多个连续地址对应的符号相同,将所述多个连续地址与符号之间的映射关系合并为目标地址范围与所述多个连续地址对应的符号之间的映射关系,所述目标地址范围由所述多个连续地址确定;
    响应于解析得到所述符号表中的第一地址对应的符号与预设的错误符号相匹配,则将所述第一地址对应的符号校正为所述符号表中的第二地址对应的符号,所述第一地址是指所述符号表中对应于非断点位置的地址;所述第二地址是指所述符号表中对应于断点位置,且与所述第一地址大小最接近,数值小于所述第一地址的地址;
    将所述第一地址与校正后的符号之间的映射关系、所述目标地址范围与对应符号之间的映射关系,以及所述符号表中其它地址与符号之间的映射关系存储在预设的数据库中;
    在接收到iOS客户端发送的日志文件时,从所述数据库中查找所述日志文件中的地址对应的符号。
  2. 根据权利要求1所述的方法,其中,所述符号表中包括所述源文件的地址与所述源文件的编译单元的调试信息之间的映射关系,所述调试信息中包括所述地址与目标系统可识别的符号之间的映射关系;
    所述从预先得到的符号表中解析得到苹果移动设备操作系统iOS中的源文件的地址与目标系统可识别的符号之间的映射关系,包括:
    从所述符号表中解析得到所述源文件的地址对应的编译单元的调试信息;
    从所述调试信息中,查找得到所述源文件的地址与目标系统可识别的符号之间的映射关系。
  3. 根据权利要求2所述的方法,其中,从预先得到的符号表解析得到苹果移动设备操作系统iOS中源文件的地址与目标系统可识别的符号之间的映射关系,还包括:
    响应于未从所述符号表中解析得到所述源文件的地址对应的编译单元的调试信息,则将所述源文件的地址加上或减去预设阈值后,重新查询所述调试信息。
  4. 根据权利要求1所述的方法,其中,所述从预先得到的符号表中解析得到苹果移动设备操作系统iOS中的源文件的地址与目标系统可识别的符号之间的映射关系之后,所述方法还包括:
    按照地址的大小对解析得到的地址与符号之间的映射关系进行排序。
  5. 根据权利要求4所述的方法,其中,所述按照地址的大小对解析得到的地址与符号之间的映射关系进行排序之后,所述方法还包括:
    响应于所述排序中包括连续多个相同的地址,则保留所述多个相同的地址中排序最高的地址与符号之间的映射关系,删除所述多个相同的地址中其余的地址与符号之间的映射关系。
  6. 根据权利要求1所述的方法,其中,所述从预先得到的符号表中解析得到苹果移动设备操作系统iOS中的地址与目标系统可识别的符号之间的映射关系之后,所述方法还包括:
    从解析得到的地址与符号之间的映射关系中删除地址与预设的错误地址相匹配的映射关系。
  7. 根据权利要求1-6中任一项所述的方法,其中,所述数据库包括多个存储节点,不同存储节点对应于不同的地址区间;
    所述将所述第一地址与校正后的符号之间的映射关系、所述目标地址范围与符号之间的对应关系,以及所述符号表中其它地址与符号之间的映射关系存储在预设的数据库中,包括:
    根据所述第一地址、所述目标地址范围以及所述符号表中其它地址所属的地址区间,将所述第一地址与校正后的符号之间的映射关系、所述目标地址范围与符号之间的映射关系,以及所述符号表中其它地址与符号之间的映射关系存储到相应的存储节点中。
  8. 根据权利要求1所述的方法,其中,所述数据库包括内存数据库和磁盘数据库,所述从所述数据库中查找所述日志文件中的地址对应的符号,包括:
    根据所述日志文件中的地址确定是否在所述内存数据库中查询到对应的映射关系;
    若根据所述日志文件中的地址确定在所述内存数据库中查询到对应的映射关系,则返回所述日志文件中地址对应的符号;
    将与所述日志文件中地址对应的映射关系加载至所述内存数据库中。
  9. 根据权利要求8所述的方法,其中,在所述根据所述日志文件中的地址确定是否在所述内存数据库中查询到对应的映射关系之后,还包括:
    若根据所述日志文件中的地址确定在所述内存数据库中没有查询到对应的映射关系,则根据所述日志文件中的地址确定是否在所述磁盘数据库中查询到对应的映射关系;
    若根据所述日志文件中的地址确定在所述磁盘数据库中查询到对应的映射关系,则返回所述日志文件中地址对应的符号;
    将与所述日志文件中地址对应的映射关系加载至所述内存数据库中。
  10. 根据权利要求9所述的方法,其中,在所述根据所述日志文件中的地址确定是否在所述磁盘数据库中查询到对应的映射关系之后,还包括:
    若根据所述日志文件中的地址确定在所述磁盘数据库中没有查询到对应的映射关系,则返回所述日志文件中地址对应的符号;
    采用预设工具根据所述日志文件中的地址对符号表进行实时解析,得到地址与符号之间映射关系,并返回所述日志文件中地址对应的符号。
  11. 根据权利要求8所述的方法,其中,所述方法还包括:
    若所述内存数据库中存储的映射关系在预设时间内没有被查询到,则将所述内存数据库中在预设时间内没有被查询到的映射关系设置为过期,并丢弃所述设置为过期的映射关系。
  12. 一种符号解析装置,其包括:
    解析模块,用于从预先得到的符号表中解析得到苹果移动设备操作系统iOS中的源文件的地址与目标系统可识别的符号之间的映射关系;
    合并模块,用于在解析得到的多个连续地址对应的符号相同时,将所述多个连续地址与符号之间的映射关系合并为目标地址范围与所述多个连续地址对应的符号之间的映射关系,所述目标地址范围由所述多个连续地址确定得到;
    校正模块,用于在解析得到所述符号表中的第一地址对应的符号与预设的错误符号相匹配时,将所述第一地址对应的符号校正为所述符号表中的第二地址对应的符号,所述第一地址是指所述符号表中对应于非断点位置的地址;所述第二地址是指所述符号表中对应于断点位置,且与所述第一地址大小最接近,数值小于所述第一地址的地址;
    存储模块,用于将所述第一地址与校正后的符号之间的映射关系、所述目标地址范围与符号之间的对应关系,以及所述符号表中其它地址与符号之间的映射关系存储在预设的数据库中;
    查找模块,用于在接收到iOS客户端发送的日志文件时,从所述数据库中查找所述日志文件中的地址对应的符号。
  13. 根据权利要求12所述符号解析装置,其中,所述符号表中包括所述源文件的地址与所述源文件的编译单元的调试信息之间的映射关系,所述调试信息中包括所述地址与目标系统可识别的符号之间的映射关系;
    所述解析模块包括:
    调试信息获取子模块,用于从所述符号表中解析得到所述源文件的地址对应的编译单元的调试信息;
    映射关系获取子模块,用于从所述调试信息中,查找得到所述源文件的地址与目标 系统可识别的符号之间的映射关系。
  14. 根据权利要求13所述符号解析装置,其中:
    所述映射关系获取子模块,还用于响应于未从所述符号表中解析得到所述源文件的地址对应的编译单元的调试信息,则将所述源文件的地址加上或减去预设阈值后,重新查询所述调试信息。
  15. 根据权利要求12所述符号解析装置,其中,还包括:
    排序模块,用于按照地址的大小对解析得到的地址与符号之间的映射关系进行排序。
  16. 根据权利要求15所述符号解析装置,其中,还包括:
    删除模块,用于响应于所述排序中包括连续多个相同的地址,则保留所述多个相同的地址中排序最高的地址与符号之间的映射关系,删除所述多个相同的地址中其余的地址与符号之间的映射关系。
  17. 根据权利要求12所述符号解析装置,其中:
    所述删除模块还用于,从解析得到的地址与符号之间的映射关系中删除地址与预设的错误地址相匹配的映射关系。
  18. 根据权利要求12-17任一项所述符号解析装置,其中:
    所述数据库包括多个存储节点,不同存储节点对应于不同的地址区间;
    所述存储模块根据所述第一地址、所述目标地址范围以及所述符号表中其它地址所属的地址区间,将所述第一地址与校正后的符号之间的映射关系、所述目标地址范围与符号之间的映射关系,以及所述符号表中其它地址与符号之间的映射关系存储到相应的存储节点中。
  19. 一种计算机设备,其包括:
    存储器和处理器,其中,所述存储器中存储有计算机程序,当所述计算机程序被所述处理器执行时,实现如权利要求1-11中任一项所述的方法。
  20. 一种计算机可读存储介质,其中,所述存储介质中存储有计算机程序,当所述计算机程序被处理器执行时,实现如权利要求1-11中任一项所述的方法。
PCT/CN2022/083583 2021-05-24 2022-03-29 符号解析方法、装置、设备及存储介质 WO2022247442A1 (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN202110564299.3A CN113157731A (zh) 2021-05-24 2021-05-24 符号解析方法、装置、设备及存储介质
CN202110564299.3 2021-05-24

Publications (1)

Publication Number Publication Date
WO2022247442A1 true WO2022247442A1 (zh) 2022-12-01

Family

ID=76877155

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/CN2022/083583 WO2022247442A1 (zh) 2021-05-24 2022-03-29 符号解析方法、装置、设备及存储介质

Country Status (2)

Country Link
CN (1) CN113157731A (zh)
WO (1) WO2022247442A1 (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113157731A (zh) * 2021-05-24 2021-07-23 北京字节跳动网络技术有限公司 符号解析方法、装置、设备及存储介质
CN114840400A (zh) * 2022-04-14 2022-08-02 北京字节跳动网络技术有限公司 异常组件的识别方法、装置、设备、存储介质及程序产品
CN115865866B (zh) * 2022-12-13 2023-12-22 厦门海辰储能科技股份有限公司 地址分配方法及装置

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106547782A (zh) * 2015-09-22 2017-03-29 阿里巴巴集团控股有限公司 日志信息的获取方法及装置
CN107092554A (zh) * 2016-02-18 2017-08-25 阿里巴巴集团控股有限公司 一种应用程序的故障代码确认方法及装置
CN108334515A (zh) * 2017-01-20 2018-07-27 阿里巴巴集团控股有限公司 一种处理崩溃文件中堆栈地址的方法、装置及系统
CN111381992A (zh) * 2020-03-06 2020-07-07 北京五八信息技术有限公司 一种崩溃日志处理方法、装置、电子设备及存储介质
CN111506491A (zh) * 2019-01-31 2020-08-07 阿里巴巴集团控股有限公司 信息处理方法及装置、存储介质和处理器
CN113157731A (zh) * 2021-05-24 2021-07-23 北京字节跳动网络技术有限公司 符号解析方法、装置、设备及存储介质

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100650574B1 (ko) * 2004-11-17 2006-11-29 엘지노텔 주식회사 피씨아이를 이용한 이중화 장치의 심볼 테이블 복원 방법
CN102566768B (zh) * 2010-12-13 2015-06-17 腾讯科技(深圳)有限公司 一种对字符自动判断修正的方法及系统
CN102981956B (zh) * 2012-11-30 2016-01-27 华为技术有限公司 overlay符号表建立和查找的方法、装置及程序调制系统
US10108509B2 (en) * 2015-07-16 2018-10-23 Texas Instruments Incorporated Dynamic enabling of redundant memory cells during operating life

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106547782A (zh) * 2015-09-22 2017-03-29 阿里巴巴集团控股有限公司 日志信息的获取方法及装置
CN107092554A (zh) * 2016-02-18 2017-08-25 阿里巴巴集团控股有限公司 一种应用程序的故障代码确认方法及装置
CN108334515A (zh) * 2017-01-20 2018-07-27 阿里巴巴集团控股有限公司 一种处理崩溃文件中堆栈地址的方法、装置及系统
CN111506491A (zh) * 2019-01-31 2020-08-07 阿里巴巴集团控股有限公司 信息处理方法及装置、存储介质和处理器
CN111381992A (zh) * 2020-03-06 2020-07-07 北京五八信息技术有限公司 一种崩溃日志处理方法、装置、电子设备及存储介质
CN113157731A (zh) * 2021-05-24 2021-07-23 北京字节跳动网络技术有限公司 符号解析方法、装置、设备及存储介质

Also Published As

Publication number Publication date
CN113157731A (zh) 2021-07-23

Similar Documents

Publication Publication Date Title
WO2022247442A1 (zh) 符号解析方法、装置、设备及存储介质
US11068441B2 (en) Caseless file lookup in a distributed file system
CN109656923B (zh) 一种数据处理方法、装置、电子设备及存储介质
CN111352902A (zh) 日志处理方法、装置、终端设备及存储介质
CN107704202B (zh) 一种数据快速读写的方法和装置
CN111737564B (zh) 一种信息查询方法、装置、设备及介质
US20160246877A1 (en) Local context search results improvements
CN115825312B (zh) 色谱检测数据交互方法、装置、设备和计算机可读介质
CN111950857A (zh) 基于业务指标的指标体系管理方法、装置以及电子设备
WO2023029854A1 (zh) 数据查询方法、装置、存储介质及电子设备
CN110990346A (zh) 基于区块链的文件数据处理方法、装置、设备及存储介质
CN111198861A (zh) 逻辑日志的处理方法、装置及电子设备
CN113918659A (zh) 数据操作方法、装置、存储介质及电子设备
CN113722325A (zh) 数据库中表信息检测方法、装置、计算机设备及存储介质
CN110866031B (zh) 数据库访问路径的优化方法、装置、计算设备以及介质
WO2022247441A1 (zh) 日志文件的解析方法、装置、设备及存储介质
CN115809267A (zh) 一种用于生成审计结果的方法、设备、介质及程序产品
US20230138113A1 (en) System for retrieval of large datasets in cloud environments
CN115114113A (zh) 日志记录方法、装置、设备及存储介质
CN115729797A (zh) 代码相似函数检测方法、装置、电子设备及存储介质
CN109543079B (zh) 数据查询方法、装置、计算设备及存储介质
CN113761016A (zh) 数据查询方法、装置、设备及存储介质
CN113448957A (zh) 一种数据查询方法和装置
CN116431523B (zh) 一种测试数据管理方法、装置、设备及存储介质
CN112307061A (zh) 用于查询数据的方法和装置

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 22810176

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE