The Developer's Guide to Debugging

Total Page:16

File Type:pdf, Size:1020Kb

The Developer's Guide to Debugging The Developer’s Guide to Debugging Thorsten Grotker¨ · Ulrich Holtmann Holger Keding · Markus Wloka The Developer’s Guide to Debugging 123 Thorsten Gr¨otker Ulrich Holtmann Holger Keding Markus Wloka Internet: http://www.debugging-guide.com Email: [email protected] ISBN: 978-1-4020-5539-3 e-ISBN: 978-1-4020-5540-9 Library of Congress Control Number: 2008929566 c 2008 Springer Science+Business Media B.V. No part of this work may be reproduced, stored in a retrieval system, or transmitted in any form or by any means, electronic, mechanical, photocopying, microfilming, recording or otherwise, without written permission from the Publisher, with the exception of any material supplied specifically for the purpose of being entered and executed on a computer system, for exclusive use by the purchaser of the work. Printed on acid-free paper 987654321 springer.com Foreword Of all activities in software development, debugging is probably the one that is hated most. It is guilt-ridden because a technical failure suggests personal fail- ure; because it points the finger at us showing us that we have been wrong. It is time-consuming because we have to rethink every single assumption, every single step from requirements to implementation. Its worst feature though may be that it is unpredictable: You never know how much time it will take you to fix a bug - and whether you’ll be able to fix it at all. Ask a developer for the worst moments in life, and many of them will be related to debugging. It may be 11pm, you’re still working on it, you are just stepping through the program, and that’s when your spouse calls you and asks you when you’ll finally, finally get home, and you try to end the call as soon as possible as you’re losing grip on the carefully memorized observations and deductions. In such moments, you may eventually be choosing between restarting your debugging task or restarting your relationship. My personal estimate is that debugging is the number one cause for programmer’s divorces. And yet, debugging can be a joy, as much thrill as solving puzzles, riddles, or murder mysteries – if you proceed in a systematic way and if you are equipped with the right tools for the job. This is where The Developer’s Guide to Debugging comes into play. Thorsten Grotker,¨ Ulrich Holtmann, Holger Keding, and Markus Wloka speak directly to the entrenched developer, give straight-forward advice on solving debugging problems and come up with solutions real fast. Whether it is solving memory problems, debugging parallel programs, or dealing with problems induced by your very tool chain - this book offers first aid that is tried and proven. I would have loved to have such a book at the beginning of my debugging career – I would have gazed at it in amazement of what these debugging tools can do for me, and by following its advice, I could have saved countless hours of manual debugging – time I could have spent on other activities. For instance, I could have made my code more reliable such that in the end, I would not have had to do any debugging at all. v vi Foreword This, of course, is the long-term goal of professional programming: To come up with code that is right from the start, where all errors are prevented (or at least detected) by some verification or validation method. Today already, assertions and unit tests help a lot in increasing confidence into our programs. In the future, we may even have full-fledged verification of industrial-size systems. We’re not there yet; it may take years to get there; and even if we get there, whatever method we come up with certainly will not be applicable to programming languages as we know them. When dealing with today’s programs, especially those written in C and C++, we’ll still spend some time on debugging – and that’s where The Developer’s Guide to Debugging provides truly priceless advice. Saarland University, Spring 2008 Andreas Zeller Preface At the time of writing this book, we – the authors – are all working for a technology company that produces software, and more. Not on the same project or product, though. Yet we have all been called to support customers and colleagues when it came to debugging C and C++ programs – as part of our software engineering work, because we produce tools that let users write optimized simulation programs, or simply because we happen to develop debugging tools. And we kept repeating the same fundamental techniques, time and again, as there was no good textbook on debugging we could refer to. Until now. The Book’s Website We have created the website http://www.debugging-guide.com to aug- ment the book, by listing up-to-date references on the topic of software debugging: access to tools, books, journals, research papers, conferences, tutorials, and web links. The examples used in this book, and further material, can be downloaded from this website. vii Acknowledgments This book would not have come to exist without the help of numerous people. To begin with, we owe Mark de Jongh from Springer for encouraging us to write this book, for his support, and for his endless patience, which we stress-tested so many times. We are also grateful to a large number of people, among them our colleagues at Synopsys, for coming up with a steady stream of challenges in the area of software debugging, and for teaching us tricks how to crack tough nuts. This has been the seedbed for this book. Any attempt at presenting a complete list of names here is bound to fail. We would like to mention Andrea Kroll, as she was the first person asking us to write down a structured approach to debugging a simulation program, and Roland Verreet, for his encouragement and insights on marketing. We also thank Joachim Kunkel and Debashis Chowdhury for their support. Software has bugs, and so have books, especially early drafts. The help of brave people led to considerable improvements of this book’s quality and readability. We would like to thank, in alphabetical order, the following people for their contribu- tions to this process: Ralf Beckers, Joe Buck, Ric Hilderink, Gernot Koch, Rainer Leupers, Olaf Scheufen, Matthias Wloka, and Christian Zunker. We are grateful to Scott Meyers for his input on how to organize chapters and for his suggestions on how to present key material. We also want to express thanks to Andrea Holter¨ for her insightful comments written up during repeated front-to-back reviews. Mike Appleby, Simon North, and Ian Stephens deserve credit for helping us turn disjoint bursts of information into something – hopefully – much more intelligible, ix x Acknowledgments and also for covering up the many crimes against the English language we had committed. Any remaining errors and shortcomings are our own. Finally, it must be mentioned that this book would not have been possible without the enduring support from our families. Thank you! About the Authors Thorsten Grotker¨ was born in 1965 in Monchengladbach,¨ Germany. He received a diploma and doctorate degree in Electrical Engineering from Aachen University of Technology. Thorsten joined Synopsys in 1997, working in various functions in the areas of system level design and hardware verification. He is also an active member of the Open SystemC Initiative. Thorsten enjoys travel and photography. Ulli Holtmann was born in 1964 in Hildesheim, Germany. He studied Computer Science at the Technical University of Braunschweig and received his doctorate in 1995. He joined Synopsys in 1995 as an R&D engineer. From 1995–2000, he worked at the U.S. headquarters in Mountain View, and since then in Herzogenrath, Germany. He is married and has two children. Holger Keding was born in 1970 in Kempen, Germany. He studied Electrical Engi- neering and Information Technology at Aachen University of Technology, where he received his doctorate in 2002. He joined Synopsys in 2001 as Corporate Application Engineer, focusing on system level design and simulation methodol- ogy. He is an active member of the Open SystemC Initiative (OSCI). In his spare time he enjoys sailing, music, skiing, and spending time with his family and friends. Holger is married and has two children. Markus Wloka was born in Heidelberg in 1962, and grew up in Kiel, Germany. He received his Ph.D. in Computer Science from Brown University, USA, in 1991. From 1991–1996 he worked for Motorola SPS (now Freescale) in Tempe, USA, on projects that applied parallel processing to low power optimization of ASIC chips. In 1996 he joined Synopsys in Germany, where he currently holds the position of Director R&D. He is married to Anke Brenner, and has 3 children: Sarah, Thomas, and Kristin. His hobbies include reading, sailing, traveling, and buying the latest- and-greatest technological gadgets. Aachen, Thorsten Grotker¨ April 2008 Ulrich Holtmann Holger Keding Markus Wloka xi Contents 1 You Write Software; You have Bugs .............................. 1 2 A Systematic Approach to Debugging ............................ 5 2.1 Why Follow a Structured Process? . 5 2.2 Making the Most of Your Opportunities . 5 2.3 13 Golden Rules . 7 2.3.1 Understand the Requirements . 8 2.3.2 Make it Fail . 8 2.3.3 Simplify the Test Case . 9 2.3.4 Read the Right Error Message . 9 2.3.5 Check the Plug . 9 2.3.6 Separate Facts from Interpretation . 10 2.3.7 Divide and Conquer . 10 2.3.8 Match the Tool to the Bug . 12 2.3.9 One Change at a Time .
Recommended publications
  • Boundschecker Free Download
    Boundschecker free download click here to download I give Micro Focus and/or Micro Focus partners permission to contact me regarding Micro Focus products and services. View our Privacy Policy. Download here. IMO It might be a better idea to write custom memory manager (the one that supports new/delete/malloc/free wrappers). Make a new/delete. Our website provides a free download of Micro Focus DevPartner for Visual C++ BoundsChecker Suite Our antivirus check shows. Download Boundschecker - best software for Windows. Deleaker Add-in for Visual C++: Deleaker is a useful add-in for Visual Studio that helps. boundschecker Windows 10 downloads - Free boundschecker download for Windows 10 - Windows 10 Download - Free Windows 10 Download. DevPartner® Visual C++ BoundsChecker Suite; Visual COBOL® for Visual Download the zip file that contains the HeapAgent free trial. Breaking the bounds of BoundsChecker: Micro Focus DevPartner® for Visual C++ / BoundsChecker Suite extends the DevPartner BoundsChecker capabilities. NET and native support DevPartner VC++ BoundsChecker Suite - Geared for C/C++ Development Micro Focus Testing Solutions - ASQ for. You can also download this document in Microsoft Word for Windows version / format . On every call to allocate or free memory, HeapAgent validates the. BoundsChecker is a memory checking and API call validation tool used for C++ software From Wikipedia, the free encyclopedia. BoundsChecker is an indispensable tool for Windows programming. It finds errors that no one else can find (including tons in Microsoft's code!!). Its main focus is. Bounds checker Free Download,Bounds checker Software Collection Download. The transition from BoundsChecker tools to the Intel Inspector XE is straightforward.
    [Show full text]
  • Dxperience V2008 Vol 1 All Devexpress ASP.NET, Winforms, WPF and Productivity Tools in One Package
    /issue 66/us edition best selling publisher awards see page 58 .upThe latest dateproducts available at www.componentsource.com Experience the DevExpress Difference • ASP.NET, WinForms & WPF Components • IDE Productivity Tools • Business Application Frameworks In one integrated package • XtraReports Suite • XtraReports for ASP.NET • XtraGrid Suite • XtraCharts for ASP.NET • XtraEditors Suite • ASPxGridView • XtraCharts Suite • ASPxEditors • XtraPivotGrid Suite • ASPxPivotGrid • XtraBars Suite • ASPxperience • XtraScheduler Suite • ASPxTreeList • XtraLayout Control • ASPxSpellChecker • XtraNavBar • ASPxHTML Editor • XtraPrinting Library • CodeRush • XtraSpellChecker • Refactor! Pro • XtraVerticalGrid • eXpressPersistent Objects • XtraTreeList • eXpressApp Framework DXperience v2008 vol 1 All DevExpress ASP.NET, WinForms, WPF and Productivity Tools in one package Learn more at: www.componentsource.com/devexpress US Headquarters European Headquarters Asia / Pacific Headquarters ComponentSource ComponentSource ComponentSource 650 Claremore Prof Way 30 Greyfriars Road 3F Kojimachi Square Bldg www.componentsource.com Suite 100 Reading 3-3 Kojimachi Chiyoda-ku Woodstock Berkshire Tokyo GA 30188-5188 RG1 1PE Japan Sales Hotline: USA United Kingdom 102-0083 Tel: (770) 250 6100 Tel: +44 118 958 1111 Tel: +81-3-3237-0281 Fax: (770) 250 6199 Fax: +44 118 958 9999 Fax: +81-3-3237-0282 (888) 850-9911 /n software /n software Red Carpet Subscription 2008 Write communications, security and e-business applications. • Includes components for FTP, IMAP, SNMP, SSL, SSH, S/MIME, Digital Certificates, Credit Card Processing and e-business (EDI) transactions • Free updates, upgrades, tech support and new releases for a year NEW RELEASE IP*Works! Internet Communications Secure Components Includes IP*Works! which is a ATOM, REST, MX, DNS, RSS, NNTP, /n software Red Carpet comprehensive framework for SMPP, POP, Rexec, Rshell, SMTP, Subscription includes secure Internet development.
    [Show full text]
  • Dynamic Binary Analysis and Instrumentation Nicholas Nethercote
    Dynamic Binary Analysis and Instrumentation or Building Tools is Easy Nicholas Nethercote Trinity College A dissertation submitted for the degree of Doctor of Philosophy at the University of Cambridge Copyright c 2004 Nicholas Nethercote ii Statement of Originality Most of the work described in this dissertation is my own, but some of the work described was done in collaboration with others. Chapters 1, 6 and 7 are entirely my own work. Chapter 2 describes a software system that I implemented large parts of, but which is partly the work of others. Without my contributions to this system, the work described in chapters 3, 4, 5 and 6 would not have been possible. The contributions of others to this system are described within the text in Sections 1.2.3, 2.1.3 and 2.4.1. Chapter 2 is partly based on a publication [82] that I co-authored with Julian Seward. Chapters 3, 4 and 5 describe software tools that I designed and implemented. Chapter 3 contains one section (Section 3.4) that is derived from a publication [80] that I co-authored with Alan Mycroft. Chapter 4 is based on a publication [79] that I co-authored with Jeremy Fitzhardinge. Chapter 5 is based on a publication [81] that I co-authored with Alan Mycroft. The section “Author Publications” below lists all these publications. They are also listed in the bibliography. All the words, tables and figures within are my own. No part of this dissertation has been submitted, or is being concurrently submitted, for a degree or diploma or any other qualification at this or any other university.
    [Show full text]
  • The Parallel Programming Landscape
    THE STATE OF Parallel Programming The Parallel Programming Landscape Multicore has gone mainstream — but are developers ready? An Exclusive Research Report arallel computing is the primary way that processor The proliferation of multicore processors means manufacturers are dealing with the physical limits that software developers must incorporate P of transistor-based processor technology. Multiple parallelism into their programming in order processors — or cores — are joined together on a single inte- to achieve increased application performance. grated circuit to provide increased performance and better But many programmers are ill-equipped for energy efficiency than using a single processor. Multicore parallel programming, lacking the requisite technology is now standard in desktop and laptop computers. training and often relying on primitive devel- Mobile computing devices like smartphones and tablets are opment tools. The research shows that better also incorporating multicore processors into their designs. and simpler tools and libraries are needed to The problem with multicore computing is that help programmers parallelize their code and software applications no longer automatically benefit from to debug the complex concurrency bugs that improvements in processor performance the way they did parallelism exposes. in the past. Those benefits can only be realized by writing applications that expect and take advantage of parallelism. Sponsored by The State of Parallel Programming In 2006, Saman Amarasinghe, now a computer science Figure 2. How important is parallel programming to your work? professor at MIT, described this as a “looming software Not sure 1 crisis” for software developers who write code on platforms Critical – our software would not Not important – our 8% that abstract away processor architecture and who therefore software would not work without parallelism benefit from parallelism don’t know how to benefit from parallelism.
    [Show full text]
  • Valgrind for OSE
    Valgrind for OSE Lifei Tang 8/18/2012 Supervisor: Moris Behnam Supervisor: Mathias Engan Examiner: Thomas Nolte Supervisor: Daniel Forsgren Abstract For programmers, it is always painful and hard to identify non-fatal errors like memory leaks, out of boundary errors or data race condition with traditional debug tools e.g. GDB. Today, there are many tools available to help the programmers to find these problems. The collection of Valgrind tools is a good example. Valgrind itself is an open source framework for debugging and profiling. It is today available for Linux, Darwin and Android, on hardware platforms such as ARM, x86 and PPC. Valgrind virtualizes the user mode environment and depends on the host OS environment. This thesis explores how Valgrind could be adapted to support an OSE (a real-time operation system product from ENEA software AB) target in a Linux host environment. 1 | P a g e Acknowledgement I would like to thank many people, without their support this work would not have been possible. I am really grateful to my supervisor at ENEA Software AB, Mathias Engan, who offers tons of help for solving all kinds of issues from the technical problem to my the daily company life; and Daniel Forsgren, my special technical advisor at ENEA, who kindly and patiently helps me to harming the technical problems on a weekly basis and provide me lots of valuable ideas, without his helps, I won’t even know how to start the whole thing. I’d like to thank Dr. Moris Behnam and Prof. Thomas Nolte, my thesis supervisor and examiner at Mälardalen University, who provide me constructive advices on my thesis.
    [Show full text]
  • Devpartner Advanced Error Detection Techniques Table of Contents
    DevPartner 10.6.1 Advanced Error Detection Techniques Micro Focus The Lawn 22-30 Old Bath Road Newbury, Berkshire RG14 1QN UK http://www.microfocus.com Copyright © Micro Focus 2001-2012. All rights reserved. MICRO FOCUS, the Micro Focus logo and Visual COBOL are trademarks or registered trademarks of Micro Focus IP Development Limited or its subsidiaries or affiliated companies in the United States, United Kingdom and other countries. All other marks are the property of their respective owners. 2 DevPartner Advanced Error Detection Techniques Table of Contents Preface . 7 Who Should Read This Manual . 7 What This Manual Covers . 7 Conventions Used In This Manual . 8 Getting Help . 8 Contact . 9 Chapter 1 · Workflow and Configuration Settings . 11 DevPartner Error Detection Workflow . 11 Benefits of the DevPartner Error Detection Workflow . 12 Saving Error Detection Configurations . 12 Using Error Detection from the Command Line . 12 Compiling, Instrumenting, and Building Unmanaged (Native) C++ Projects with NMDE- VENV . 14 Instrumenting Native C/C++ Code with nmvcbuild . 14 Customizing the DevPartner Error Detection Settings . 15 General . 16 Data Collection . 16 API Call Reporting . 17 Call Validation . 17 COM Call Reporting . 17 COM Object Tracking . 17 Deadlock Analysis . 18 Memory Tracking . 18 .NET Call Reporting . 19 .NET Analysis . 19 Resource Tracking . 20 Modules and Files . 20 Fonts and Colors . 20 Configuration File Management . 20 Chapter 2 · Checking and Analyzing Programs . 23 Error Detection Tasks . 23 Finding Leaks . 23 Finding Pointer and Memory Errors . 23 Finding Memory Corruption . 24 Analyzing Transitions to Legacy Code in .NET Applications . 24 Validating Win32 API Calls . 25 Searching for Application Deadlocks .
    [Show full text]
  • Dynamic Binary Analysis and Instrumentation
    UCAM-CL-TR-606 Technical Report ISSN 1476-2986 Number 606 Computer Laboratory Dynamic binary analysis and instrumentation Nicholas Nethercote November 2004 15 JJ Thomson Avenue Cambridge CB3 0FD United Kingdom phone +44 1223 763500 http://www.cl.cam.ac.uk/ c 2004 Nicholas Nethercote This technical report is based on a dissertation submitted November 2004 by the author for the degree of Doctor of Philosophy to the University of Cambridge, Trinity College. Technical reports published by the University of Cambridge Computer Laboratory are freely available via the Internet: http://www.cl.cam.ac.uk/TechReports/ ISSN 1476-2986 Abstract Dynamic binary analysis (DBA) tools such as profilers and checkers help programmers create better software. Dynamic binary instrumentation (DBI) frameworks make it easy to build new DBA tools. This dissertation advances the theory and practice of dynamic binary analysis and instrumentation, with an emphasis on the importance of the use and support of metadata. The dissertation has three main parts. The first part describes a DBI framework called Valgrind which provides novel features to support heavyweight DBA tools that maintain rich metadata, especially location metadata| the shadowing of every register and memory location with a metavalue. Location metadata is used in shadow computation, a kind of DBA where every normal operation is shadowed by an abstract operation. The second part describes three powerful DBA tools. The first tool performs detailed cache profiling. The second tool does an old kind of dynamic analysis|bounds-checking|in a new way. The third tool produces dynamic data flow graphs, a novel visualisation that cuts to the essence of a program's execution.
    [Show full text]
  • DOUBLETAKE: Evidence-Based Dynamic Analysis
    DOUBLETAKE: Evidence-Based Dynamic Analysis Charlie Curtsinger Emery D. Berger Tongping Liu School of Computer Science Department of Computer Science University of Massachusetts Amherst The University of Texas at San Antonio Amherst, MA 01003 San Antonio, TX 78249-0667 {charlie,emery}@cs.umass.edu [email protected] Abstract a random value, also known as a “canary”, placed in unallocated Dynamic analysis can be helpful for debugging, but is often space between heap objects [13]. A corrupted canary is incontro- too expensive to use in deployed applications. We introduce vertible evidence that a buffer overflow occurred at some time in evidence-based dynamic analysis, an approach that enables ex- the past. tremely lightweight analyses for an important class of errors: those We present an approach called evidence-based dynamic analy- that can be forced to leave evidence of their existence. Evidence- sis that is based on the following key insight: by combining check- based dynamic analysis lets execution proceed at full speed until pointing with evidence gathering, it is possible to let applications the end of an epoch. It then examines program state to find evidence run at full speed in the common case (no errors). If we discover that an error occurred at some time during that epoch. If so, execu- evidence of an error, we can go back and re-execute the program tion is rolled back and re-execution proceeds with instrumentation with instrumentation activated to find the exact cause of the error. We present a prototype evidence-based dynamic analysis frame- activated to pinpoint the error.
    [Show full text]
  • DOUBLETAKE: Fast and Precise Error Detection Via Evidence-Based Dynamic Analysis
    2016 IEEE/ACM 38th IEEE International Conference on Software Engineering DOUBLETAKE: Fast and Precise Error Detection via Evidence-Based Dynamic Analysis Tongping Liu ∗ Charlie Curtsinger ∗ Emery D. Berger Dept. of Computer Science Dept. of Computer Science College of Information and University of Texas Grinnell College Computer Sciences at San Antonio 1116 8th Ave. University of Massachusetts San Antonio, TX 78249 Grinnell, IA 50112 Amherst [email protected] [email protected] Amherst, MA 01003 [email protected] ABSTRACT Categories and Subject Descriptors Programs written in unsafe languages like C and C++ often suffer D.2.5 [Software Engineering]: Testing and Debugging–Debugging from errors like buffer overflows, dangling pointers, and memory Aids, Monitors, Tracing; D.2.4 [Software Engineering]: Soft- leaks. Dynamic analysis tools like Valgrind can detect these er- ware/Program Verification–Reliability rors, but their overhead—primarily due to the cost of instrumenting every memory read and write—makes them too heavyweight for use in deployed applications and makes testing with them painfully Keywords slow. The result is that much deployed software remains suscepti- Dynamic Analysis, Software Quality, Testing, Debugging, Leak ble to these bugs, which are notoriously difficult to track down. Detection, Buffer Overflow Detection, Use-After-Free Detection This paper presents evidence-based dynamic analysis, an ap- proach that enables these analyses while imposing minimal over- 1. INTRODUCTION head (under 5%), making it practical for the first time to perform these analyses in deployed settings. The key insight of evidence- Dynamic analysis tools are widely used to find bugs in appli- based dynamic analysis is that for a class of errors, it is possible to cations.
    [Show full text]
  • SECURE BIT: BUFFER-OVERFLOW PROTECTION by Krerk Piromsopa
    SECURE BIT: BUFFER-OVERFLOW PROTECTION By Krerk Piromsopa A DISSERTATION Submitted to Michigan State University In partial fulfillment of the requirements For the degree of DOCTOR OF PHILOSOPHY Department of Computer Science and Engineering 2006 ABSTRACT SECURE BIT: BUFFER-OVERFLOW PROTECTION By Krerk Piromsopa For decades, buffer-overflow attacks have remained the most persistent threat to the computer security world. The most common type of buffer-overflow attacks is an attack that changes the control flow by overflowing control data. In this thesis, Secure Bit, architectural approach, is proposed to protect against buffer- overflow attacks on control data (return-address and function-pointer attacks in particular). Secure Bit provides a hardware bit to enforce the integrity of addresses from being modified by external data (input). Secure Bit is completely transparent to user software; providing full backward compatibility with legacy user code. It can detect and prevent all address-corrupting buffer-overflow attacks with little run-time performance penalty. Addresses passed in buffers between processes are marked insecure and control instructions using those addresses as targets will raise an exception. An important differentiating aspect of this protocol is that once an address has been marked as insecure there is no instruction to remark it as secure. To validate Secure Bit, we first theoretically pursue a secure system with respect to buffer-overflow attacks and prove that Secure Bit provides a sufficient condition for preventing buffer-overflow attacks. Robustness and transparency are demonstrated by emulating the hardware, and booting Linux on the emulator, running application software on that Linux, and performing known attacks.
    [Show full text]
  • Devpartner Studio Professional Edition Build Microsoft Applications with Confidence
    DATA SHEET DEVPARTNER STUDIO PROFEssIONAL EdITION Build Microsoft applications with confidence. DevPartner Studio enhances Microsoft Visual Studio and Visual Studio Team System with an award- winning suite of code quality features that increase development productivity. DevPartner Studio automatically detects and diagnoses software defects, performance problems and security vulnerabilities early in the development process—when problem resolution is most cost-effective. With expert advice, coding standards and best practices built in, DevPartner Studio Professional Edition enables Windows application teams to improve software quality, maximize developer productivity and deliver superior software reliability, performance and security. DATA SHEET | DevPartner Studio Professional Edition Review source code, DevPartner Studio code review provides a list of potential errors and inconsistencies, and detect errors expert advice on how to fix them. Security scanning checks each line of ASP.NET code Commonly accepted software for more than 200 security vulnerabilities. development practices typically include Code complexity is an early indicator peer reviews of the source code under of potential quality problems so development. The downside is manual understanding which parts of an code reviews tend to be time-consuming, application are most complex can facilitate if carried out at all, leaving development better testing. DevPartner Studio code teams less time to focus on other projects review automatically calculates the code and requirements. complexity and “bad-fix” probability of DevPartner Studio assists development each method in a .NET application. These teams by automating the code review metrics provide priority and guidance to process. The code review function quickly help focus test suite development on code examines source code from a variety of that has the highest potential to contain languages, including Visual Basic .NET, undiscovered defects.
    [Show full text]
  • Understanding Devpartner Studio
    Understanding DevPartner ® DevPartner Studio Professional Edition DevPartner Studio Enterprise Edition DevPartner for Visual C++ BoundsChecker Suite Release 9.0 Technical support is available from our Technical Support Hotline or via our FrontLine Support Web site. Technical Support Hotline: 1-800-538-7822 FrontLine Support Web Site: http://frontline.compuware.com This document and the product referenced in it are subject to the following legends: Access is limited to authorized users. Use of this product is subject to the terms and conditions of the user’s License Agreement with Compuware Corporation. © 2008 Compuware Corporation. All rights reserved. Unpublished - rights reserved under the Copyright Laws of the United States. U.S. GOVERNMENT RIGHTS Use, duplication, or disclosure by the U.S. Government is subject to restrictions as set forth in Compuware Corporation license agreement and as provided in DFARS 227.7202-1(a) and 227.7202-3(a) (1995), DFARS 252.227-7013(c)(1)(ii)(OCT 1988), FAR 12.212(a) (1995), FAR 52.227-19, or FAR 52.227-14 (ALT III), as applicable. Compuware Corporation. This product contains confidential information and trade secrets of Com- puware Corporation. Use, disclosure, or reproduction is prohibited with- out the prior express written permission of Compuware Corporation. DevPartner® and BoundsChecker are trademarks or registered trademarks of Compuware Corporation. Adobe® Reader copyright © 1984-2008 Adobe Systems Incorporated. All rights reserved. Adobe, Acrobat, and Acrobat Reader are trademarks of Adobe Systems Incorporated. All other company or product names are trademarks of their respective owners. US Patent Nos.: 5,987,249, 6,332,213, 6,186,677, 6,314,558, 6,760,903 B1,and 6,016,466 September 19, 2008 Table of Contents Preface Who Should Read This Manual .
    [Show full text]