    <rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:admin="http://webns.net/mvcb/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:content="http://purl.org/rss/1.0/modules/content/">
     <channel>
        <title>ACCU  :: Reviews</title>
        <link>https://members.accu.org/index.php/journals/2741</link>
        <description>Professionalism in Programming</description>
        <dc:language>en-us</dc:language> 
        <dc:creator>Administrator</dc:creator> 
        <admin:generatorAgent rdf:resource="http://www.xaraya.org" /> 
        <admin:errorReportsTo rdf:resource="mailto:webeditor@accu.org" />
       <sy:updatePeriod>hourly</sy:updatePeriod>
       <sy:updateFrequency>1</sy:updateFrequency>
       <docs>http://backend.userland.com/rss</docs>


        <h2>Journal Articles</h2>


<div class="xar-mod-head"><span class="xar-mod-title">CVu Journal Vol 31, #6 - January 2020 + Programming Topics</span></div>

<table border="0" cellpadding="1" cellspacing="0">
    <tbody>
    <tr>
        <td valign="top">
            Browse in :
       </td>
       <td valign="top">

                                            <a href="https://members.accu.org/index.php/journals/">All</a>

                     &gt;                         <a href="https://members.accu.org/index.php/journals/c76/">Journals</a>

                     &gt;                         <a href="https://members.accu.org/index.php/journals/c77/">CVu</a>

                     &gt;                         <a href="https://members.accu.org/index.php/journals/c406/">316</a>
                    (11)
<br />

                                            <a href="https://members.accu.org/index.php/journals/">All</a>

                     &gt;                         <a href="https://members.accu.org/index.php/journals/c13/">Topics</a>

                     &gt;                         <a href="https://members.accu.org/index.php/journals/c65/">Programming</a>
                    (877)
<br />

                                            <a href="https://members.accu.org/index.php/journals/c406-65/">Any of these categories</a>

                    -                        <a href="https://members.accu.org/index.php/journals/c406+65/">All of these categories</a>
<br />
</td>
   </tr>
   </tbody>
</table>




<div class="xar-error">
   <p>
 <strong>Note:</strong> when you create a new publication type,
the articles module will automatically use the templates
<em>user-display-[publicationtype].xt</em>
and <em>user-summary-[publicationtype].xt</em>.
If those templates do not exist when you try to preview or display a new article,
you'll get this warning :-)  Please place your own templates in themes/<em>yourtheme</em>/modules/articles . The templates will get the extension .xt there. </p>
</div>
<div class="xar-norm xar-standard-box-padding">
   <h1><strong>Title:</strong>&nbsp;Reviews</h1>
<p><strong>Author:</strong>&nbsp;Bob Schmidt</p>
<p>
<strong>Date:</strong> 01 January 2020 20:16:13 +00:00 or Wed, 01 January 2020 20:16:13 +00:00</p>
<p><strong>Summary:</strong>&nbsp;The latest roundup of reviews.</p>
<p><strong>Body:</strong>&nbsp;<p class="EditorIntro">We are always happy to receive reviews of anything that may be of use, or of interest, to software developers. The emphasis will tend to be on technical books, but we are also interested in less-technical works â€“ for example, the humanities or fiction â€“ and in media other than traditional print books.</p>

<p class="EditorIntro">Do you know of something you think deserves â€“ or does not deserve â€“ a wider audience? Share it here. We're keen to highlight differing opinions on the same work, so if you disagree with a review here do send in your own!  Contact Ian Bruntlett at reviews@accu.org.</p>

<h2>The Art of Debugging with GDB, DDD, and Eclipse</h2>

<p><img src="/content/images/journals/cvu31-6/Reviews/Debugging.png"/></p>

<p><strong>By Norman Matloff and Peter Jay Salzman, published by No Starch Press, 2008, 280 pages, ISBN: 078-1-59327-174-9</strong></p>

<p><strong>Reviewed by Ian Bruntlett</strong></p>

<p>I have, in my time, debugged programs in a variety of ways and debuggers. I bought this book to become familiar with the debuggers in the GNU toolchain â€“ that is gdb and ddd â€“ but this book also covers the Eclipse IDE. A Linux/Unix-like environment and the C programming language is assumed although some coverage of C++ in the main text and some coverage of Java, Perl, and, Python is present in the final chapter.</p>

<p>Chapter 1, â€˜Some Preliminaries for Beginners and Prosâ€™, is well-meaning but I found its example (of an insert sort) to be confusingly written and a bad example to beginner coders. Also, the text refers to source code line numbers heavily so it would have been helpful to have line numbers for that example. However, the source code of examples is available for downloading so this is less of a problem (see nostarch.com/debugging.htm).</p>

<p>Chapter 2, â€˜Stopping to take a look aroundâ€™, is about breakpoints which can not only act as breakpoints but also as watch points and catch points. However, you will need to see the GNU gdb documentation to get info on catch points.</p> 

<p>Chapter 3, â€˜Inspecting and Setting Variablesâ€™, has an example of using a binary tree to sort input data. Whilst the examples given are good for debugging they make serious design compromises, presumably in the interest of demonstrating the debuggerâ€™s facilities.</p>

<p>Chapter 4, â€˜When a Program Crashesâ€™, goes into detail about how Linux handles virtual memory and has an extensive debugging session fixing a badly broken C string handling library.</p> 

<p>Chapter 5, â€˜Debugging in a Multiple-Activities Contextâ€™, covers client/server network programs, multi-threading and parallelprogramming, all of which are currently out of my depth.</p>

<p>Chapter 6, â€˜Special Topicsâ€™, covers syntax errors, shared and dynamic libraries, and debugging curses programs.</p>

<p>Chapter 7, â€˜Other Toolsâ€™, covers how text editors (vim in this case), the compiler, strace, ltrace, static code checkers (e.g. splint â€“ C only) can all be used to prevent or deal with bugs and finishes off with a section on debugging dynamically allocated memory (malloc etc, free) using tools like Electric Fence, mtrace and MALLOC_CHECK_.</p>

<p>Chapter 8, â€˜Using GDB/DDD/Eclipse for Other Languagesâ€™, covers Java, Perl, Python, SWIG, and (32-bit Intel) assembly language debugging.</p>

<p>A good book, especially if used alongside the dedicated manuals available for the tools covered here (www.gnu.org/manual/manual.html is a good place to start). You will need a background in C and Linux/Unix to get the most out of this book.</p>

<h2>The C Programming Language 2e</h2>

<p><img src="/content/images/journals/cvu31-6/Reviews/Clanguage.png"/></p>

<p><strong>By Brian W. Kernighan and Dennis M. Ritchie, published by Prentice-Hall, 1988, 288 pages, ISBN: 0-13-110362-8</strong></p>

<p><strong>Reviewed by Ian Bruntlett</strong></p>

<p>This is the classic introduction to the C programming language. The first edition was originally published in 1978 and this second edition was published in 1988. A lot of things have changed since then but this is a worthwhile introduction nevertheless. There are other books on C but I am not sure which books to read after this one â€“ if I could have a modern bibliography for this book, it would come in very handy â€“ I intend to review other C books, in time.</p>

<p>After an introductory chapter, the basics of the language are catered for in this order:</p>

<ul>

<li>Types, operators, and expressions</li>

<li>Control flow</li>

<li>Functions and program structure</li>

<li>Pointers and arrays</li>

<li>Structures</li>

<li>Input and output</li>

</ul>

<p>After that, there is a chapter on â€˜The UNIX System Interfaceâ€™, which features interesting albeit limited implementations of fopen, getchar, putchar, opendir and malloc.</p>

<p>The appendices round off the book. The Reference Manual is based on the draft ANSI standard and presents a grammar of the language. The Standard Library appendix complements the grammar by offering up a summary of the standard library. The final appendix summarises the changes made to the language since the publication of the first edition of this book.</p>

<p>The source code for this book is available to download but I found the organisation of the code to be lacking. Fortunately, a kind soul has reorganised the code and made it available on GitHub (https://github.com/caisah/K-and-Rexercises-and-examples). Most Internet searches for this book bring up sites that either want to sell you the book or give you a pirate PDF copy. Because of that, Iâ€™m citing an errata page (https://s3-us-west-2.amazonaws.com/belllabs-microsite-dritchie/cbook/2ediffs.html)</p>

<p>The code examples are for tuition purposes only â€“ this isnâ€™t the place to go looking for production code â€“ however the UNIX System Interface chapter comes close.</p>

<p>Finally, the book ends with an index â€“ a glossary would have been welcome, too. This book does show its age a bit but it still should be on the reading list of any would-be C programmer.</p>
</p>
<p><strong>Notes:</strong>&nbsp;</p>
<p><em>More fields may be available via dynamicdata ..</em></p>
</div>
</channel>
</rss>
