The Linux Programmer's Toolbox (Paperback)

John Fusco

  • 出版商: Prentice Hall
  • 出版日期: 2007-03-16
  • 定價: $1,650
  • 售價: 8.0$1,320
  • 語言: 英文
  • 頁數: 656
  • 裝訂: Paperback
  • ISBN: 0132198576
  • ISBN-13: 9780132198578
  • 相關分類: Linux
  • 立即出貨 (庫存=1)

買這商品的人也買了...

商品描述

Description

Master the Linux Tools That Will Make You a More Productive, Effective Programmer

The 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 includes

  • Maximizing 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 them
  • Tracing and resolving application bottlenecks with gprof and valgrind
  • Streamlining and automating the documentation process
  • Rapidly finding help, solutions, and workarounds when you need them
  • Optimizing program code with sar, vmstat, iostat, and other tools
  • Debugging IPC with shell commands: signals, pipes, sockets, files, and IPC objects
  • Using printf, gdb, and other essential debugging tools

 

Table of 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? 2

1.4 An Introduction to Archive Files 4

1.5 Know Your Package Manager 12

1.6 Some Words about Security and Packages 17

1.7 Inspecting Package Contents 27

1.8 Keeping Packages up to Date 33

1.9 Summary 39

Chapter 2 Building from Source 41

2.1 Introduction 41

2.2 Build Tools 41

2.3 The Build Process 74

2.4 Understanding Errors and Warnings 78

2.5 Summary 100

Chapter 3 Finding Help 103

3.1 Introduction 103

3.2 Online Help Tools 103

3.3 Other Places to Look 120

3.4 Documentation Formats 124

3.5 Internet Sources of Information 131

3.6 Finding Information about the Linux Kernel 134

3.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 221

5.2 User Mode versus Kernel Mode 222

5.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 320

6.4 Process Synchronization with wait 327

6.5 The Process Footprint 329

6.6 Setting Process Limits 340

6.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 415

8.1 Introduction 415

8.2 Tools for Working with Open Files 415

8.3 Dumping Data from a File 420

8.4 Shell Tools for System V IPC 426

8.5 Tools for Working with POSIX IPC 431

8.6 Tools for Working with Signals 434

8.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 445

9.2 System Performance 445

9.3 Application Performance 475

9.4 Multiprocessor Performance 501

9.5 Summary 509

Chapter 10 Debugging 513

10.1 Introduction 513

10.2 The Most Basic Debugging Tool: printf 514

10.3 Getting Comfortable with the GNU Debugger: gdb 529

10.4 Debugging Shared Objects 561

10.5 Looking for Memory Issues 569

10.6 Unconventional Techniques 583

10.7 Summary 594

Index 597

商品描述(中文翻譯)

描述

《Linux 程式設計師工具箱》幫助您利用 GNU/Linux 上可用的大量開源工具。作者 John Fusco 系統地描述了大多數 GNU/Linux 發行版上最有用的工具,並提供了簡潔的示例,您可以輕鬆修改以滿足自己的需求。

您將首先學習下載、構建和安裝開源項目的基礎知識。然後,您將了解開源工具的分發方式,以及如何避免浪費時間在尚未準備好的項目上。接下來,您將學習構建自己項目的要點。Fusco 還演示了在文本編輯器中應該注意的事項,甚至可能向您展示一些您最喜歡的文本編輯器的新技巧。

通過學習 Linux 內核與軟件的交互作用,您將增強對 Linux 內核的了解。Fusco 用簡單而發人深省的示例引導您了解操作系統背後的原理。然後,他將向您展示如何使用更高級的工具將這些知識應用起來。他專注於如何解釋像 sar、vmstat、valgrind、strace 等工具的輸出,並將其應用於您的應用程序;如何利用各種編程 API 開發自己的工具;以及如何編寫能夠自我監控的代碼。

接下來,Fusco 將介紹幫助您提升軟件性能的工具。他解釋了當今多核 CPU 的原理,並演示如何從這些系統中獲得最佳性能。最後,您將學習在任何情況下調試代碼的工具和技巧。

內容包括:

- 使用編輯器、版本控制工具、源代碼瀏覽器和“美化器”來提高生產力
- 解釋內核:了解工具告訴您的信息
- 理解進程以及可用於管理進程的工具
- 使用 gprof 和 valgrind 追踪和解決應用程序瓶頸
- 簡化和自動化文檔編寫過程
- 在需要時快速尋找幫助、解決方案和解決方法
- 使用 sar、vmstat、iostat 和其他工具優化程序代碼
- 使用 shell 命令調試 IPC:信號、管道、套接字、文件和 IPC 對象
- 使用 printf、gdb 和其他必要的調試工具

目錄

- ```