《Linux开发工具箱-项目开发的最有效途径》PDF下载

  • 购买积分:15 如何计算积分?
  • 作  者:(美)法斯克(Fusco,J)著;贾严磊,董西广,王在奇译
  • 出 版 社:北京:清华大学出版社
  • 出版年份:2008
  • ISBN:9787302177869
  • 页数:476 页
图书介绍:本书包括:最大化编辑器,版本控制工具和源代码浏览器、解释内核、理解进程、使用gprof和valgrind跟踪和解决应用瓶颈、使用Sar.vmstat.iostat及其他工具优化程序代码、使用shell命令调试IPC、使用printf.gdb和其他基础调试工具。

第1章 开源工具的下载和安装 1

1.1简介 1

1.2什么是开放源码 2

1.3开放源码的意义 2

搜索工具 2

版本格式 3

1.4存档文件 4

识别存档文件 5

查询存档文件 6

提取存档文件 9

1.5认识软件包管理器 10

源代码或二进制格式的选择 11

使用软件包 12

1.6关于安全性和软件包 13

验证的必要性 14

软件包的基本认证 14

数字签名的软件包验证机制 15

RPM格式的GPG签名 16

何时不能验证软件包 19

1.7检查软件包目录 20

查看软件包 20

深入理解RPM软件包 22

深入理解Debian软件包 23

1.8软件包更新 25

Apt:高级软件包工具 26

Yum: Yellowdog修订版更新 26

Synaptic: The GUI Front End For Apt 27

up2date: Red Hat软件包更新 28

1.9小结 29

本章用到的工具 29

网络资源 29

第2章 从源代码构建 31

2.1简介 31

2.2构建工具 32

背景知识 32

make工具 34

程序的链接 52

深入理解库 53

2.3创建过程 57

GNU构建工具 57

配置阶段 57

构建阶段:make 59

安装阶段:make install 60

2.4理解错误和警告 60

常见的Makefile错误 61

配置阶段的错误 63

创建阶段的错误 64

理解编译器错误 66

理解编译器警告信息 68

理解链接器错误 76

2.5小结 77

本章用到的工具 77

网络资源 78

第3章 查找帮助 79

3.1简介 79

3.2在线帮助工具 80

man页面 80

man结构 81

查找man页面:apropos 82

查找正确的man页面:whatis 84

在man页面中查找 85

一些推荐的man页面 86

GNU info 88

浏览info页面 88

查找info页面 90

推荐info页面 91

桌面帮助工具 91

3.3其他 92

/usr/share/doc 92

交叉引用和索引 93

查询软件包 94

3.4文件格式 95

TeX/LaTtex/DVI 95

Texinfo 96

DoCbook 96

HTML 97

PostScript 98

便携式文件格式(PDF) 99

troff 100

3.5来自互联网的信息 100

www.gnu.org 100

sourceforge.net 101

Linux文件项目 101

Usenet(世界性的新闻组网络系统) 102

邮件列表 102

其他论坛 102

3.6查找Linux内核信息 103

内核构建 103

内核模块 105

混杂(miscellaneous)文件 106

3.7小结 106

本章用到的工具 106

在线资源 106

第4章 编辑和保存源文件 109

4.1简介 109

4.2文本编辑器 110

默认编辑器 111

在文本编辑器中查找 111

vi和Emacs 113

Vim: vi扩展 113

Emacs 130

反对复制品 137

GUI文本编辑器 139

内存使用率 144

编辑器概述 145

4.3版本控制 145

版本控制基础 145

定义版本控制的术语 147

支持工具 148

diff和patch简介 149

检查和合并更改 152

4.4源代码的优化器和浏览器 157

缩进代码优化器 158

Astyle风格 160

用cflow分析代码 160

用ctags分析代码 163

用cscope浏览代码 163

用Doxygen浏览和记录代码 164

使用编译器分析代码 165

4.5小结 167

本章用到的工具 168

参考资料 168

在线资源 168

第5章 开发者必备内核知识 171

5.1简介 171

5.2用户模式与内核模式 172

系统调用 173

用户空间与内核空间的数据传送 175

5.3进程调度程序 175

初识调度 176

阻塞,抢先占有和放弃 177

调度的优先与公平 178

优先权和Nice值 182

实时优先权 183

创建实时进程 185

进程状态 186

时间度量 190

5.4设备和设备驱动程序 198

设备驱动程序的类型 199

内核模块 200

设备节点 201

设备和输入/输出 210

5.5 I/O调度程序 217

Linus电梯式调度(aka noop) 218

I/O调度程序的截止时间 219

先占I/O调度程序 219

完整的公平地排队I/O调度程序 219

选择一个I/O调度程序 219

5.6用户空间的内存管理 220

虚拟内存的解释 220

内存耗尽 232

5.7小结 241

本章用到的工具 241

本章讨论的APIs 242

在线资源 242

参考资料 242

第6章 进程 243

6.1简介 243

6.2进程的产生 243

fork和vfork 244

写拷贝 244

clone 245

6.3 exec函数 245

可执行脚本 246

可执行目标文件 248

二进制文件 248

6.4 wait实现进程同步 250

6.5进程的内存占用 252

文件描述符 254

堆栈 259

常驻内存和固定内存 260

6.6设定进程限制 260

6.7进程和procfs 263

6.8进程管理工具 265

通过ps命令显示进程信息 265

使用formats增加进程信息 267

查找名中带有ps和pgrep的进程 269

利用pmap查看进程使用的空间 269

通过名字发送信号给进程 271

6.9小结 271

系统调用和本章用到的API 272

本章用到的工具 272

在线资源 272

第7章 进程通信 273

7.1简介 273

7.2使用纯文本文件的IPC 274

文件加锁 279

使用文件进行IPC的缺点 279

7.3共享内存 279

POSIX共享内存API 280

System V共享内存API 283

7.4信号 286

向进程发送信号 286

信号处理 287

信号掩码和信号处理 288

实时信号 291

具有sigqueue和sigaction的高级信号 293

7.5管道 295

7.6套接字 296

创建套接字 296

使用socketpair的本地套接字示例 298

使用本地套接字的客户端/服务器端示例 300

使用网络套接字的客户端/服务器端示例 305

7.7消息队列 305

System V消息队列 306

POSIX消息队列 309

POSIX与System V的消息队列的区别 314

7.8信号量 314

POSIX信号量使用的API 318

System V信号量使用的API 321

7.9小结 323

本章中用到的系统调用和API 323

参考资料 325

在线资源 325

第8章 使用shell命令调试IPC 327

8.1简介 327

8.2打开文件时用到的工具 327

lsof 328

fuser 329

ls 330

file 330

stat 330

8.3查看文件中的数据 331

字符串命令 334

xxd命令 334

hexdump命令 335

od命令 336

8.4用于V IPC系统的内核工具 337

V系统共享内存 337

V系统消息队列 340

V系统的信号量 340

8.5 POSIX IPC用到的工具 341

POSIX共享内存 342

POSIX消息队列 342

POSIX信号量 343

8.6信号用到的工具 344

8.7管道和套接字用到的工具 346

管道和FIFO 346

套接字 347

8.8使用索引识别文件和IPC对象 349

8.9小结 351

本章用到的工具 351

在线资源 351

第9章 性能优化 353

9.1简介 353

9.2系统性能 353

内存问题 354

CPU利用率和总线冲突 363

设备和中断 365

查找系统性能问题的工具 371

9.3应用程序性能 377

计时命令的第一步 378

x86info处理器结构 379

使用Valgrind检查指令效率 382

ltrace简介 385

使用strace监视程序性能 387

传统性能优化工具:gcov和gprof 388

OProfile简介 394

9.4多处理器平台 400

SMP硬件的类型 400

SMP机上的编程实现 404

9.5小结 406

本章介绍的基本性能 406

本章介绍的专业术语 406

本章用到的工具 406

在线资源 407

参考资料 407

第10章 调试 409

10.1简介 409

10.2最基本的调试工具:printf 410

使用printf存在的问题 410

有效地使用printf 414

关于printf调试工具的结束语 421

10.3 GNU下最好用的调试器:gdb 422

使用gdb运行代码 423

停止和重新执行 424

检查和管理数据 432

使用gdb连接正在运行的进程 441

调试内核文件 442

使用gdb进行多线程调试 445

调试优化的代码 446

10.4调试共享对象 449

使用共享对象的时间和原因 449

创建共享对象 449

定位共享对象 450

覆盖默认共享目标的位置 451

共享对象的安全问题 451

共享对象使用的工具 452

10.5查找内存问题 454

两次释放 454

内存泄露 455

缓冲区溢出 455

glibc工具 457

使用valgrind调试内存 460

使用Electric Fence检测内存泄漏 465

10.6非常规技术 467

创建自己的黑匣子 467

获取运行时的堆栈轨迹 470

强制内核转储 471

使用信号 473

使用procfs调试 473

10.7小结 475

本章用到的工具 476

在线资源 476

参考资料 476