1<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 2<html> 3<!-- Copyright (C) 1992-2021 Free Software Foundation, Inc. 4Contributed by Cygnus Support. Written by Julia Menapace, Jim Kingdon, 5and David MacKenzie. 6 7Permission is granted to copy, distribute and/or modify this document 8under the terms of the GNU Free Documentation License, Version 1.3 or 9any later version published by the Free Software Foundation; with no 10Invariant Sections, with no Front-Cover Texts, and with no Back-Cover 11Texts. A copy of the license is included in the section entitled "GNU 12Free Documentation License". --> 13<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ --> 14<head> 15<title>STABS: Flow</title> 16 17<meta name="description" content="STABS: Flow"> 18<meta name="keywords" content="STABS: Flow"> 19<meta name="resource-type" content="document"> 20<meta name="distribution" content="global"> 21<meta name="Generator" content="makeinfo"> 22<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 23<link href="index.html#Top" rel="start" title="Top"> 24<link href="Symbol-Types-Index.html#Symbol-Types-Index" rel="index" title="Symbol Types Index"> 25<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents"> 26<link href="Overview.html#Overview" rel="up" title="Overview"> 27<link href="Stabs-Format.html#Stabs-Format" rel="next" title="Stabs Format"> 28<link href="Overview.html#Overview" rel="previous" title="Overview"> 29<style type="text/css"> 30<!-- 31a.summary-letter {text-decoration: none} 32blockquote.smallquotation {font-size: smaller} 33div.display {margin-left: 3.2em} 34div.example {margin-left: 3.2em} 35div.indentedblock {margin-left: 3.2em} 36div.lisp {margin-left: 3.2em} 37div.smalldisplay {margin-left: 3.2em} 38div.smallexample {margin-left: 3.2em} 39div.smallindentedblock {margin-left: 3.2em; font-size: smaller} 40div.smalllisp {margin-left: 3.2em} 41kbd {font-style:oblique} 42pre.display {font-family: inherit} 43pre.format {font-family: inherit} 44pre.menu-comment {font-family: serif} 45pre.menu-preformatted {font-family: serif} 46pre.smalldisplay {font-family: inherit; font-size: smaller} 47pre.smallexample {font-size: smaller} 48pre.smallformat {font-family: inherit; font-size: smaller} 49pre.smalllisp {font-size: smaller} 50span.nocodebreak {white-space:nowrap} 51span.nolinebreak {white-space:nowrap} 52span.roman {font-family:serif; font-weight:normal} 53span.sansserif {font-family:sans-serif; font-weight:normal} 54ul.no-bullet {list-style: none} 55--> 56</style> 57 58 59</head> 60 61<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000"> 62<a name="Flow"></a> 63<div class="header"> 64<p> 65Next: <a href="Stabs-Format.html#Stabs-Format" accesskey="n" rel="next">Stabs Format</a>, Up: <a href="Overview.html#Overview" accesskey="u" rel="up">Overview</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Symbol-Types-Index.html#Symbol-Types-Index" title="Index" rel="index">Index</a>]</p> 66</div> 67<hr> 68<a name="Overview-of-Debugging-Information-Flow"></a> 69<h3 class="section">1.1 Overview of Debugging Information Flow</h3> 70 71<p>The GNU C compiler compiles C source in a <samp>.c</samp> file into assembly 72language in a <samp>.s</samp> file, which the assembler translates into 73a <samp>.o</samp> file, which the linker combines with other <samp>.o</samp> files and 74libraries to produce an executable file. 75</p> 76<p>With the ‘<samp>-g</samp>’ option, GCC puts in the <samp>.s</samp> file additional 77debugging information, which is slightly transformed by the assembler 78and linker, and carried through into the final executable. This 79debugging information describes features of the source file like line 80numbers, the types and scopes of variables, and function names, 81parameters, and scopes. 82</p> 83<p>For some object file formats, the debugging information is encapsulated 84in assembler directives known collectively as <em>stab</em> (symbol table) 85directives, which are interspersed with the generated code. Stabs are 86the native format for debugging information in the a.out and XCOFF 87object file formats. The GNU tools can also emit stabs in the COFF and 88ECOFF object file formats. 89</p> 90<p>The assembler adds the information from stabs to the symbol information 91it places by default in the symbol table and the string table of the 92<samp>.o</samp> file it is building. The linker consolidates the <samp>.o</samp> 93files into one executable file, with one symbol table and one string 94table. Debuggers use the symbol and string tables in the executable as 95a source of debugging information about the program. 96</p> 97 98 99 100</body> 101</html> 102