Стандартталған қателіктерді жою деректері форматы (DWARF)
DWARF
DWARF форматы – кең таралған, стандартизацияланған қателерді жою деректері форматы. ELF форматымен үйлесімді, C++, Fortran тілдерін қолдайды. Жаңа мүмкіндіктер!
Ағылшыншамен салыстырыңыз: абзацты басыңыз — түпнұсқа терезеде ашылады. Абзац астындағы EN түймесі оны мәтін ішінде көрсетеді.
Мазмұны
Кіріспе
Стандартталған жөндеу деректері форматы
Standardized debugging data format
DWARF – кеңінен қолданылатын стандартталған жөндеу деректері форматы. DWARF бастапқыда орындалатын және сілтемеленетін форматпен (ELF) бірге әзірленген, бірақ ол объект файл пішімдеріне тәуелсіз. Атауы "ELF" ортағасырлық фантастикалық толықтыру болып табылады, оның ресми мағынасы жоқ, алайда "Debugging With Arbitrary Record Formats" атауы кейіннен ретроним ретінде ұсынылды. Ол C++ кеңістіктерін, Fortran 90 деректерін және компилятордың қосымша оңтайландыру техникаларын қолдауды қамтиды (басқалармен қатар). DWARF комитеті 2010 жылы "жақсартылған деректерді қысу, оңтайландырылған кодты жақсы сипаттау және C++ тіліндегі жаңа мүмкіндіктерге қолдау" ұсынатын DWARF 4-ші нұсқасын жариялады. DWARF форматының 5-ші нұсқасы 2017 жылдың ақпан айында жарияланды. Ол "көптеген салалардағы жақсартуларды қамтиды: деректерді жақсы қысу, жөндеу деректерін орындалатын файлдардан бөлу, макростар мен бастапқы файлдарды жақсарту, символдарды жылдам іздеу, оңтайландырылған кодты жөндеу, сондай-ақ функционалдық және өнімділік бойынша көптеген жақсартулар".
DWARF is a widely used, standardized debugging data format. DWARF was originally designed along with Executable and Linkable Format (ELF), although it is independent of object file formats. The name is a medieval fantasy complement to "ELF" that had no official meaning, although the name "Debugging With Arbitrary Record Formats" has since been proposed as a backronym. adding (among other things) support for C++ namespaces, Fortran 90 data and additional compiler optimization techniques. The DWARF committee published version 4 of DWARF, which offers "improved data compression, better description of optimized code, and support for new language features in C++", in 2010. Version 5 of the DWARF format was published in February 2017. It "incorporates improvements in many areas: better data compression, separation of debugging data from executable files, improved description of macros and source files, faster searching for symbols, improved debugging of optimized code, as well as numerous improvements in functionality and performance."
Құрылымы
DWARF әрбір айнымалыны, типін, процедураны және т.б. бейнелеу үшін Дебьюгтік ақпарат жазуы (DIE) деп аталатын дерек құрылымын пайдаланады. DIE тегтерге (мысалы, , , ) және атрибуттарға (кілт-мәнді жұптар) ие. DIE-лерде ішкі (бала) DIE-лер ұяластырылып, ағаш тәрізді құрылымды құруы мүмкін. DIE атрибуты ағаштың кез келген жеріндегі басқа DIE-ге сілтеме жасай алады, мысалы, айнымалыны көрсететін DIE, айнымалының типін сипаттайтын DIE-ге сілтеме жасайтын жазбаға ие болады. Орынды үнемдеу үшін, символдық жөндеушілерге қажетті екі үлкен кесте қарапайым, арнайы мақсаттағы шекті күйдегі автоматтары үшін байт кодталған нұсқаулар түрінде ұсынылады. Код орналасқан жерлерді бастапқы код орналасқан жерлерге және керісінше карталайтын Тізім нөмірі кестесі, сонымен қатар функцияның прологтары мен эпилогтарының қай нұсқаулар екенін көрсетеді. Шақыру кадры туралы ақпарат кестесі жөндеушілерге шақыру стегіндегі кадрларды табуға мүмкіндік береді. DWARF жөндеу туралы ақпарат, жөндеу кадрлары сияқты әртүрлі бөлімдерге бөлінген.
DWARF uses a data structure called a Debugging Information Entry (DIE) to represent each variable, type, procedure, etc. A DIE has a tag (e. g., , , ) and attributes (key value pairs). A DIE can have nested (child) DIEs, forming a tree structure. A DIE attribute can refer to another DIE anywhere in the tree—for instance, a DIE representing a variable would have a entry pointing to the DIE describing the variable's type. To save space, two large tables needed by symbolic debuggers are represented as byte coded instructions for simple, special purpose finite state machines. The Line Number Table, which maps code locations to source code locations and vice versa, also specifies which instructions are part of function prologues and epilogues. The Call Frame Information table allows debuggers to locate frames on the call stack. DWARF has been divided into different sections like debug info, debug frame, etc.
Құралдар
Libdwarf – орындалатын файлдар мен объект файлдарындағы DWARF нысанындағы қателерді жою туралы ақпаратқа қол жеткізуді қамтамасыз ететін кітапхана.
Libdwarf is a library that provides access to the DWARF debugging information in executable files and object files.