Lines Matching refs:information
11 This document is the central repository for all information pertaining to debug
12 information in LLVM. It describes the :ref:`actual format that the LLVM debug
13 information takes <format>`, which is useful for those interested in creating
14 front-ends or dealing directly with the information. Further, this document
15 provides specific examples of what debug information for C/C++ looks like.
17 Philosophy behind LLVM debugging information
20 The idea of the LLVM debugging information is to capture how the important
25 * Debugging information should have very little impact on the rest of the
27 be modified because of debugging information.
30 ways <intro_debugopt>` with the debugging information.
38 and the debugging information should work with any language.
54 the stored debug information into source-language specific information. As
58 Debug information consumers
61 The role of debug information is to provide meta information normally stripped
62 away during the compilation process. This meta information provides an LLVM
70 as Visual Studio and WinDBG. LLVM's debug information format is mostly derived
74 It would also be reasonable to use debug information to feed profiling tools
80 Debug information and optimizations
83 An extremely high priority of LLVM debugging information is to make it interact
85 information provides the following guarantees:
87 * LLVM debug information **always provides information to accurately read
97 information, allowing them to update the debugging information as they
101 * LLVM debug information does not prevent optimizations from
105 * LLVM debug information is automatically optimized along with the rest of
107 information is automatically merged by the linker, and unused information
110 Basically, the debug information allows you to compile a program with
111 "``-O0 -g``" and get full debug information, allowing you to arbitrarily modify
113 "``-O3 -g``" gives you full debug information that is always available and
120 test the optimizer's handling of debugging information. It can be run like
128 This will test impact of debugging information on optimization passes. If
129 debugging information influences optimization passes then it will be reported
130 as a failure. See :doc:`TestingGuide` for more information on LLVM test
135 Debugging information format
138 LLVM debugging information has been carefully designed to make it possible for
139 the optimizer to optimize the program and debugging information without
140 necessarily having to know anything about debugging information. In
141 particular, the use of metadata avoids duplicated debugging information from
143 debugging information for a function if it decides to delete the function.
145 To do this, most of the debugging information (descriptors for types,
149 Debug information is designed to be agnostic about the target debugger and
150 debugging information representation (e.g. DWARF/Stabs/etc). It uses a generic
151 pass to decode the information that represents variables, types, functions,
154 debugger to interpret the information.
161 debugger to form stack traces, show information about local variables, etc.
167 Debug information descriptors are `specialized metadata nodes
185 This intrinsic provides information about a local element (e.g., variable).
243 This intrinsic provides information when a user source variable is set to a new
266 llvm instructions to encode line number and scoping information. Consider the
345 information. In particular, it shows how the ``llvm.dbg.declare`` intrinsic and
346 location information, which are attached to an instruction, are applied
355 The first intrinsic ``%llvm.dbg.declare`` encodes debugging information for the
357 scope information for the variable ``X``.
366 Here ``!14`` is metadata providing `location information
369 information attached to the intrinsics indicates that the variable ``X`` is
379 The third intrinsic ``%llvm.dbg.declare`` encodes debugging information for
381 scope information for the variable ``Z``.
392 The scope information attached with each instruction provides a straightforward
428 amount of available debug information, but increases the reliability of the
429 remaining information.
523 LLVM preserves debug information throughout mid-level and backend passes,
524 ultimately producing a mapping between source-level information and
526 is relatively straightforwards for line number information, as mapping
549 disproportionate amount of debugging information in the output binary to
841 C/C++ front-end specific debug information
844 The C and C++ front-ends represent information about the program in a
846 in terms of information content. This allows code generators to
848 information, and contains enough information for non-dwarf targets to
855 As support for debugging information gets added to the various LLVM
856 source-language front-ends, the information used should be documented here.
859 the debug information that would best describe those constructs. The
864 C/C++ source file information
868 instruction. One can extract line number information encoded in LLVM IR using
891 explicitly. This information is useful to avoid to have counters on brackets when
894 C/C++ global variable information
963 C/C++ function information
993 C++ specific debug information
996 C++ special member functions information
999 DWARF v5 introduces attributes defined to enhance debugging information of C++ programs. LLVM can g…
1026 Fortran specific debug information
1029 Fortran function information
1083 Debugging information format
1099 information generated by compiler in DWARF format. The format does not support
1317 given by the ``DW_AT_name attribute`` of the referenced debugging information
1676 of information for each name. We want to make the DWARF tables extensible and
1682 We might want to store an offset to all of the debug information entries (DIEs)
1755 function for instance. Future tables could include more information about the
1964 majority of debug information tends to be type information. Therefore, the
1965 overriding design constraint of CodeView is the separation of type information
1966 from other "symbol" information so that type information can be efficiently
1967 merged across translation units. Both type information and symbol information is
1971 Type information is usually stored in the ``.debug$T`` section of the object
1977 to the PDB. When using PDBs, symbol information appears to remain in the object