66 Specific Ways to Debug Software and Systems
Every software developer and IT professional understands the crucial importance of effective debugging. Often, debugging consumes most of a developer’s workday, and mastering the required techniques and skills can take a lifetime. In Effective Debugging, Diomidis Spinellis helps experienced programmers more » accelerate their journey to mastery, by systematically categorizing, explaining, and illustrating the most useful debugging methods, strategies, techniques, and tools.
Drawing on more than thirty-five years of experience, Spinellis expands your arsenal of debugging techniques, helping you choose the best approaches for each challenge. He presents vendor-neutral, example-rich advice on general principles, high-level strategies, concrete techniques, high-efficiency tools, creative tricks, and the behavioral traits associated with effective debugging.
Spinellis’s 66 expert techniques address every facet of debugging and are illustrated with step-by-step instructions and actual code. He addresses the full spectrum of problems that can arise in modern software systems, especially problems caused by complex interactions among components and services running on hosts scattered around the planet. Whether you’re debugging isolated runtime errors or catastrophic enterprise system failures, this guide will help you get the job done—more quickly, and with less pain.
Key features include
* High-level strategies and methods for addressing diverse software failures
* Specific techniques to apply when programming, compiling, and running code
* Better ways to make the most of your debugger
* General-purpose skills and tools worth investing in
* Advanced ideas and techniques for escaping dead-ends and the maze of complexity
* Advice for making programs easier to debug
* Specialized approaches for debugging multithreaded, asynchronous, and embedded code
* Bug avoidance through improved software design, construction, and management « less
Shell Programming in Unix, Linux and OS X is a thoroughly updated revision of Kochan and Wood’s classic Unix Shell Programming tutorial. Following the methodology of the original text, the book focuses on the POSIX standard shell, and teaches you how to develop programs in this useful programming environment, more » taking full advantage of the underlying power of Unix and Unix-like operating systems.
After a quick review of Unix utilities, the book’s authors take you step-by-step through the process of building shell scripts, debugging them, and understanding how they work within the shell’s environment. All major features of the shell are covered, and the large number of practical examples make it easy for you to build shell scripts for your particular applications. The book also describes the major features of the Korn and Bash shells.
Learn how to…
* Take advantage of the many utilities provided in the Unix system
* Write powerful shell scripts
* Use the shell’s built-in decision-making and looping constructs
* Use the shell’s powerful quoting mechanisms
* Make the most of the shell’s built-in history and command editing capabilities
* Use regular expressions with Unix commands
* Take advantage of the special features of the Korn and Bash shells
* Identify the major differences between versions of the shell language
* Customize the way your Unix system responds to you
* Set up your shell environment
* Make use of functions
* Debug scripts
Contents at a Glance
1 A Quick Review of the Basics
2 What Is the Shell?
3 Tools of the Trade
4 And Away We Go
5 Can I Quote You on That?
6 Passing Arguments
7 Decisions, Decisions
8 ‘Round and ‘Round She Goes
9 Reading and Printing Data
10 Your Environment
11 More on Parameters
12 Loose Ends
13 Rolo Revisited
14 Interactive and Nonstandard Shell Features
A Shell Summary
B For More Information « less
Updated for C++14
Sams Teach Yourself C++ in 24 Hours is a hands-on guide to the C++ programming language. Readers are provided with short, practical examples that illustrate key concepts, syntax, and techniques.
Using a straightforward approach, this fast and friendly tutorial teaches you everything you need to know, more » from installing and using a compiler, to debugging the programs you’ve created, to what’s new in C++14.
Step-by-step instructions carefully walk you through the most common C++ programming tasks
Quizzes and exercises at the end of each chapter help you test yourself to make sure you’re ready to go on
Learn how to...
* Install and use a C++ compiler for Windows, Mac OS X, or Linux
* Build object-oriented programs in C++
* Master core C++ concepts such as functions and classes
* Add rich functionality with templates and lambda expressions
* Debug your programs for flawless code
* Learn exception and error-handling techniques
* Put to use the new features in C++14, the latest version of the language
* Create and use templates
* Control program flow with loops
* Store information in arrays and strings
* Declare and use pointers
* Use operator overloading
* Extend classes with inheritance
* Use polymorphism and derived classes
* Employ object-oriented analysis and design « less
Debug and secure your Android applications with Android Studio
ABOUT THIS BOOK
* Explore the foundations of security and learn how to apply these measures to create secure applications using Android Studio
* Create effective test cases, unit tests, and functional tests to ensure your Android applications function correctly
* Optimize the performance of your app more » by debugging and using high-quality code
WHO THIS BOOK IS FOR
If you are a developer with some Android knowledge, but you do not know how to test your applications using Android Studio, this book will guide you. It is recommended that you are familiar with Android Studio IDE.
WHAT YOU WILL LEARN
* Control the execution of your Android application by working with the debugging environment in Android Studio
* Mitigate the existing vulnerabilities in Android applications
* Create unit tests to verify the state and behavior of an activity
* Use local storage and encryption appropriately to preserve the privacy of your application data
* Ensure that communications between your applications and external servers are safe by protecting network connections
* Choose the appropriate authentication method for your Android application
* Set up the test environment to create test cases
* Create functional tests to check the interaction between components
Today, mobile applications are increasingly being used to access the Web. Mobile developers play a key role in how consumers access the Web with millions of people depending on them to create secure and functional applications. This book, beginning with the fundamentals of Android security, will guide you through the process of creating a secure and debugged application. We will look at the Android Studio development environment and take you through the steps needed to protect your local data and secure your network communications.
Initially covering the threats, risks, and vulnerabilities in software and in the Android environment, this book will then dig deeper, exploring different types of authentication methods that can be adopted in your Android application. You will be introduced to techniques and classes to test your application, before finally learning about supporting tools that will help you to improve your application.
By the end of this book, your Android application will be debugged and secure and you will be able to apply what you've learned to further application projects. « less
80 recipes to create scalable, task-based parallel programs using .NET 4.5
If you're an experienced C# developer, this book will give you the know-how to exploit the power of multicore processors. Its 80 recipes provide an in-depth guide to using .NET 4.5 to enhance application performance and scalability.
* Create multithreaded applications using .NET Framework more » 4.5
* Get introduced to .NET 4.5 parallel extensions and familiarized with .NET parallel loops
* Use new data structures introduced by .NET Framework 4.5 to simplify complex synchronisation problems
* Practical recipes on everything you will need to create task-based parallel programs
.NET parallel extensions brings the power of parallel and asynchronous programming to a much wider developer audience than ever before. This book will give a developer with no multithreaded development experience the ability to write highly scalable parallel applications that take advantage of modern multicore processors.If you are an experienced .NET developer who wants to put parallel extensions to work in your applications, this book is for you.
".NET 4.5 Parallel Extensions" is a practical, hands-on guide that provides you with a number of clear step-by-step recipes that will introduce parallelism into your applications and take advantage of modern multicore processors. This book is a crash course in using the extensions, with theory and concepts kept to a minimum.
".NET 4.5 Parallel Extensions" offers a wide-ranging presentation of parallel development concepts, and provides a working knowledge of key technologies that are important to developers who want to take advantage of multi-core architectures.
You will learn how to compose a series of producer/consumer tasks into a pipeline that can process data elements received from a real-time event stream. You will also learn how to connect the stages of pipelines together using the concurrent collections. You will learn everything you need to know to transform the multicore power found in modern processors into application performance and scalability.
What you will learn from this book
* Create a task using Parallel.Invoke, Task.Factory, and Task.Start
* Work with declarative data parallelism using Parallel Language Integrated Query (PLINQ) and its aggregate functions
* Perform independent operations on the member data of a collection using parallel loops
* Coordinate the activities of multiple tasks using new lightweight synchronization primitives
* Learn to use Visual Studio 2012 debugging and profiling capabilities related to parallel programming
* Maintain a responsive UI using asynchronous tasks
* Create a pipeline using multiple concurrent collections
This book contains practical recipes on everything you will need to create task-based parallel programs using C#, .NET 4.5, and Visual Studio. The book is packed with illustrated code examples to create scalable programs.
Who this book is written for
This book is intended to help experienced C# developers write applications that leverage the power of modern multicore processors. It provides the necessary knowledge for an experienced C# developer to work with .NET parallelism APIs. Previous experience of writing multithreaded applications is not necessary. « less
A Practical Guide to Debugging and Tracing Strategies in Windows
Use Windows debuggers throughout the development cycle - and build better software. Rethink your use of Windows debugging and tracing tools - and learn how to make them a key part of test-driven software development. Led by a member of the Windows Fundamentals Team at Microsoft, you'll apply expert debugging more » and tracing techniques - and sharpen your C++ and C# code analysis skills - through practical examples and common scenarios. Learn why experienced developers use debuggers in every step of the development process, and not just when bugs appear. « less
Find, Repair, and Prevent Bugs in Your Code
Professional programmers develop a knack of unerringly zeroing in on the root cause of a bug. They can do that because they've written a lot of buggy code and then gained experience fixing it. This book captures all this experience - use it, and you'll find you write fewer bugs, and the ones you do write more » will become easier to hunt down. « less
To help you find real solutions fast, this book is organized around real-world debugging scenarios. Hewardt and Pravat use detailed code examples to illuminate the complex debugging challenges professional developers actually face. From core Windows operating system concepts to security, Windows Vista more » and 64-bit debugging, they address emerging topics head-on - and nothing is ever oversimplified or glossed over! « less
User Guide and Reference Manual
The Boost Graphic Library (BGL) gives experienced C++ developers high quality implementations of a wide range of graph data structures and algorithms -- helping them save time that would otherwise have been spent on developing and debugging. Now, the BGL's creators offer a complete tutorial and reference more » designed to help developers get results with the BGL quickly. They also offer practical, hard-to-find guidance on generic programming that can help developers build their own software development libraries. For practicing programmers, the book introduces high quality implementations of graph data structures and algorithms that deliver outstanding efficiency and performance, and presents the BGL's flexible interface, which enables programmers to apply graph algorithms in settings where a graph may exist only implicitly. For all intermediate-to-advanced C++ programmers. « less