Book Review : Self Service Linux - Mastering the Art of Problem Determination

December 05, 2005
Self-Service Linux - Mastering the Art of Problem Determination is a part of the "Bruce Perens open source series". The very same Bruce Perens who gave the computing world the Open Source definition which has since been embraced by such popular projects as and Mozilla. He is one of the leaders in the Open Source movement and was instrumental as a Debian GNU/Linux Project leader in getting the system on to two U.S space shuttle flights. Prentice Hall and Bruce Perens has come together to bring a series of books under the banner "Bruce Perens Open Source Series" and this book falls in this category.

The Contents of the book at a glance
The book is divided into 9 independent chapters and 2 Appendices each of which covers a distinct topic invaluable to any programmer or system administrator in Linux.
The first chapter deals with the four phases of investigation which should precede any problem solving. This also includes steps to effective technical investigation . By using the guidelines described in this chapter, any person will be able to proceed according to a plan of action which will help save valuable time in trouble shooting a problem. Also these tips help the programmer to stay focused on the problem at hand.

All unices including Linux has a very powerful tool in strace. Strace is a utility which is used to trace system calls that applications make to the kernel. The second chapter of this book takes an in depth look at ways in which a programmer can leverage this tool for effective troubleshooting.

Any book covering problem solving in Linux will be incomplete if it does not have a chapter dedicated to /proc systems. The third chapter of this book gives a broad analysis of the /proc file system including all the important files and directories residing in it. In fact this chapter is spread across 30 pages which should give you a fair idea of the depth of coverage of this very important virtual file system.

The fourth chapter is titled Compiling and concentrates on defending against many compilation- related problems, the potential pitfalls to look out for and compiler optimisation. Mind you, this chapter does not list the commands for compiling but takes the reader through solving a error message generated while compiling the kernel. The authors also explain the various errors that a user can come face to face while compiling the kernel.

One of the most fundamental parts of a computer is a stack. A stack is basically used as a temporary storage for the data and plays an important role in the working of an OS. The fifth chapter of this book pursues this topic with vigor. After reading this chapter, the person will have a very good knowledge of stacks, the role played by them and their inner working on varied architecture like x86 and x64.

The sixth chapter gives a broad review of the GNU debugger. Even though there are other proprietary debuggers, GDB has an advantage in that it is one of the few which are available across a myriad of hardware platforms running Linux. With out a debugger, problems like a memory corruption and code logic error are very hard to pin point. The authors have done an excellent job in explaining the art of debugging using GDB for effective problem determination.

The seventh chapter is a short one and deals with the Linux system crashes and hangs. It pursues how among other things how you can use OOPs report to find the causes of system crashes.

Kernel debugging using KDB forms the basis of the eighth chapter of this well structured book. KDB is a kernel debugger which can be used to debug a live kernel and it can be used from the machine running the kernel itself.

ELF: Executable and Linking Format is the 9th and final chapter of this book. All Linux shared libraries and executables use the ELF format. A good knowledge of ELF is essential to improve the overall knowledge of how an operating system works and knowing ELF format will help improve the diagnostic skills of a Linux user. Considering the importance of the topic with respect to problem determination and solving, the authors have paid special attention in writing this chapter which happens to be the second largest chapter in this book.

Lastly, this book has two good appendices - the first one named The Toolbox - which gives a listing of all the problem determination tools available for Linux. The second appendix lists a Data Collection Script, an invaluable piece which will aid a user in collecting the right information quickly when a problem occurs.

A word about the Authors
This book has been co authored by two experienced developers namely Mark Wilding and Dan Behman.
Mark Wilding is a senior developer at IBM and has over 15 years of experience writing software. He is an expert in the area of Operating Systems, networks, C/C++ development, serviceability, quality engineering and computer hardware.

Dan Behman is a member of the DB2 UDB for Linux platform exploitation development team at the Toronto IBM Software Lab. He has over 10 years of experience with Linux, and has been involved in porting and enabling DB2 UDB on the latest architectures that Linux supports, including x86-64, zSeries and POWER platforms.

Book Specifications
Name : Self-Service Linux - Mastering the Art of Problem Determination
Publisher : Prentice Hall Professional Technical Reference
ISBN No: 0-13-147751-X
Price : $39.99 US / $55.99 CANADA
No of Pages : 460
Target Audience : Intermediate to Expert Programmer/ Administrator.
Website :

Things I found interesting in this book
  • This book takes a practical approach to problem determination and solving.
  • Is peppered with sample code and walk throughs which I found useful in understanding a problem. I especially liked the presentation of strace and gdb.
  • Concepts are explained in a simple and lucid manner keeping complex jargon to a minimum.
  • Though entry level programmers will find this book a bit on the far side, more experienced people can look forward to gaining a lot of knowledge from this book.
All in all a good book worthy of a place in the reference book shelf of a programmer or system administrator.