- ホーム
- > 洋書
- > 英文書
- > Computer / Operating Systems
Full Description
Master the Linux Tools That Will Make You a More Productive, Effective ProgrammerThe Linux Programmer's Toolbox helps you tap into the vast collection of open source tools available for GNU/Linux. Author John Fusco systematically describes the most useful tools available on most GNU/Linux distributions using concise examples that you can easily modify to meet your needs. You'll start by learning the basics of downloading, building, and installing open source projects. You'll then learn how open source tools are distributed, and what to look for to avoid wasting time on projects that aren't ready for you. Next, you'll learn the ins and outs of building your own projects. Fusco also demonstrates what to look for in a text editor, and may even show you a few new tricks in your favorite text editor.You'll enhance your knowledge of the Linux kernel by learning how it interacts with your software. Fusco walks you through the fundamentals of the Linux kernel with simple, thought-provoking examples that illustrate the principles behind the operating system. Then he shows you how to put this knowledge to use with more advanced tools. He focuses on how to interpret output from tools like sar, vmstat, valgrind, strace, and apply it to your application; how to take advantage of various programming APIs to develop your own tools; and how to write code that monitors itself.Next, Fusco covers tools that help you enhance the performance of your software. He explains the principles behind today's multicore CPUs and demonstrates how to squeeze the most performance from these systems. Finally, you'll learn tools and techniques to debug your code under any circumstances.Coverage includesMaximizing productivity with editors, revision control tools, source code browsers, and "beautifiers"Interpreting the kernel: what your tools are telling you Understanding processes-and the tools available for managing themTracing and resolving application bottlenecks with gprof and valgrind Streamlining and automating the documentation processRapidly finding help, solutions, and workarounds when you need themOptimizing program code with sar, vmstat, iostat, and other toolsDebugging IPC with shell commands: signals, pipes, sockets, files, and IPC objectsUsing printf, gdb, and other essential debugging toolsForeword Preface Acknowledgments About the Author Chapter 1 Downloading and Installing Open Source Tools Chapter 2 Building from Source Chapter 3 Finding Help Chapter 4 Editing and Maintaining Source Files Chapter 5 What Every Developer Should Know about the Kernel Chapter 6 Understanding Processes Chapter 7 Communication between Processes Chapter 8 Debugging IPC with Shell Commands Chapter 9 Performance Tuning Chapter 10 Debugging Index
Contents
Foreword xvii Preface xix Acknowledgments xxiii About the Author xxv Chapter 1 Downloading and Installing Open Source Tools 1 1.1 Introduction 1 1.2 What Is Open Source? 2 1.3 What Does Open Source Mean to You? 21.4 An Introduction to Archive Files 4 1.5 Know Your Package Manager 12 1.6 Some Words about Security and Packages 171.7 Inspecting Package Contents 271.8 Keeping Packages up to Date 33 1.9 Summary 39Chapter 2 Building from Source 412.1 Introduction 41 2.2 Build Tools 41 2.3 The Build Process 74 2.4 Understanding Errors and Warnings 78 2.5 Summary 100Chapter 3 Finding Help 1033.1 Introduction 103 3.2 Online Help Tools 1033.3 Other Places to Look 120 3.4 Documentation Formats 124 3.5 Internet Sources of Information 1313.6 Finding Information about the Linux Kernel 1343.7 Summary 138 Chapter 4 Editing and Maintaining Source Files 141 4.1 Introduction 141 4.2 The Text Editor 142 4.3 Revision Control 189 4.4 Source Code Beautifiers and Browsers 203 4.5 Summary 216 Chapter 5 What Every Developer Should Know about the Kernel 221 5.1 Introduction 2215.2 User Mode versus Kernel Mode 2225.3 The Process Scheduler 226 5.4 Understanding Devices and Device Drivers 257 5.5 The I/O Scheduler 282 5.6 Memory Management in User Space 286 5.7 Summary 315 Chapter 6 Understanding Processes 317 6.1 Introduction 317 6.2 Where Processes Come From 317 6.3 The exec Functions 3206.4 Process Synchronization with wait 3276.5 The Process Footprint 329 6.6 Setting Process Limits 3406.7 Processes and procfs 343 6.8 Tools for Managing Processes 346 6.9 Summary 355 Chapter 7 Communication between Processes 357 7.1 Introduction 357 7.2 IPC Using Plain Files 358 7.3 Shared Memory 363 7.4 Signals 370 7.5 Pipes 381 7.6 Sockets 382 7.7 Message Queues 393 7.8 Semaphores 402 7.9 Summary 412 Chapter 8 Debugging IPC with Shell Commands 4158.1 Introduction 415 8.2 Tools for Working with Open Files 4158.3 Dumping Data from a File 420 8.4 Shell Tools for System V IPC 4268.5 Tools for Working with POSIX IPC 431 8.6 Tools for Working with Signals 4348.7 Tools for Working with Pipes and Sockets 437 8.8 Using Inodes to Identify Files and IPC Objects 440 8.9 Summary 442 Chapter 9 Performance Tuning 445 9.1 Introduction 4459.2 System Performance 445 9.3 Application Performance 4759.4 Multiprocessor Performance 5019.5 Summary 509 Chapter 10 Debugging 513 10.1 Introduction 513 10.2 The Most Basic Debugging Tool: printf 51410.3 Getting Comfortable with the GNU Debugger: gdb 52910.4 Debugging Shared Objects 561 10.5 Looking for Memory Issues 569 10.6 Unconventional Techniques 583 10.7 Summary 594 Index 597



