|
Linux PROGRAMMER'S TOOLBOX |
|
|
第1章 オープンソースツールのダウンロードとインストール
1 はじめに
2 オープンソースとは?
3 オープンソースが意味するもの
3-1 ツールの探し方
3-2 ディストリビューションのフォーマット
4 アーカイブファイルの概要
4_1 アーカイブファイルの種類を特定する
4_2 アーカイブファイルから内容情報を取り出す
4_3 アーカイブファイルからファイルを取り出す
5 パッケージマネージャについて知ろう
5_1 ソースとバイナリのどちらを選ぶか
5_2 パッケージマネージャの機能
6 パッケージのセキュリティについて
6_1 パッケージ検証の必要性
6_2 基本的なパッケージ検証方法
6_3 デジタル署名によるパッケージ検証
6_4 RPMにおけるGPG署名
6_5 パッケージを検証できない場合
7 パッケージの内容を調べる
7_1 パッケージを調べる方法
7_2 RPMパッケージを詳しく見てみよう
7_3 Debianパッケージを詳しく見てみよう
8 パッケージをアップデートする
8_1 Apt(Advanced Package Tool)
8_2 Yum(Yellowdog Updater Modified)
8_3 Synaptic(AptのGUIフロントエンド)
8_4 up2date(The Red Hat Package Updater)
9 まとめ
9_1 この章で使用しているツール
9_2 オンラインリファレンス
第2章 ソースからのビルド
1 はじめに
2 ビルドツール
2-1 背景
2-2 makeを理解しよう
2-3 プログラムのリンク方法
2-4 ライブラリを理解しよう
3 ビルド方法
3-1 GNUビルドツール
3-2 configure段階
3-3 ビルド段階:make
3-4 インストール段階:make install
4 エラーと警告を理解する
4-1 Makefileでよくある間違い
4-2 configure段階で生じるエラー
4-3 ビルド段階で生じるエラー
4-4 コンパイラのエラーを理解する
4-5 コンパイラの警告を理解する
4-6 リンカのエラーを理解する
5 まとめ
5-1 この章で使用しているツール
5-2 オンラインリファレンス
第3章 ヘルプの検索
1 はじめに
2 オンラインヘルプツール
2-1 manページ
2-3 manページの検索:apropos
2-4 適切なmanページを取得する:whatis
2-5 manページで見つけられること
2-6 おすすめのmanページ
2-7 GNU info
2-8 infoページの閲覧
2-9 infoページの検索
2-10 おすすめのinfoページ
2-11 デスクトップヘルプツール
3 その他に調べる場所
3-1 /usr/share/doc
3-2 相互参照と索引
3-3 パッケージへの問い合わせ
4 文書の形式
4-1 TeX/LaTeX/DVI
4-2 Texinfo
4-3 DocBook
4-4 HTML
4-5 PostScript
4-6 PDF(Portable Document Format)
4-7 troff
5 インターネットの情報源
5-1 www.gnu.org
5-2 SourceForge.net
5-3 Linux Documentation Project
5-4 Usenet
5-5 メーリングリスト
5-6 その他のフォーラム
6 カーネルに関する情報を探す
6-1 カーネルのビルド
6-2 カーネルモジュール
6-3 種々雑多な文書
7 まとめ
7-1 この章で使用しているツール
7-2 オンラインリソース
第4章 ソースファイルの編集と管理
1 はじめに
2 テキストエディタ
2-1 デフォルトのエディタ
2-2 テキストエディタに求めるもの
2-3 二大エディタ:viとEmacs
2-4 Vim:viの改良版
2-5 Emacs
2-6 クローンの攻撃
2-7 その他のGUIテキストエディタ
2-8 メモリ使用量
2-9 エディタのまとめ
3 リビジョン制御
3-1 リビジョン制御の基本
3-2 リビジョン制御の用語定義
3-3 支援ツール
3-4 diffとpatch
3-5 変更の参照とマージ
4 ソースコードの整形と閲覧ツール
4-1 コードのインデントを整形するツール
4-2 芸術的なAstyleスタイル
4-3 cflowによるコードの解析
4-4 ctagsによるコードの解析
4-5 cscopeによるコードの閲覧
4-6 Doxygenによるコードの閲覧と文書化
4-7 コンパイラを使用してコードを解析する
5 まとめ
5-1 この章で使用しているツール
5-2 参考文献
5-3 オンラインリソース
第5章 カーネルについて開発者が知るべきこと
1 はじめに
2 ユーザモードとカーネルモード
2-1 システムコール
2-2 ユーザモードとカーネルモード間のデータ移動
3 プロセススケジューラ
3-1 スケジューリング入門
3-2 ブロック、プリエンプション、イールド
3-3 スケジュールの優先度と公平性
3-4 優先度とnice値
3-5 リアルタイム優先度
3-6 リアルタイムプロセスを作成する
3-7 プロセスの状態
3-8 時間の測定方法
4 デバイスとデバイスドライバ
4-1 デバイスドライバの種類
4-2 カーネルモジュールについて
4-3 デバイスノード
4-4 デバイスとI/O
5 I/Oスケジューラ
5-1 Linus Elevator
5-2 deadline I/Oスケジューラ
5-3 anticipatory I/Oスケジューラ
5-4 Complete Fair Queuing I/Oスケジューラ
5-5 I/Oスケジューラの選択
6 ユーザ空間におけるメモリ管理
6-2 メモリ不足
7 まとめ
7-1 この章で使用しているツール
7-2 この章で解説したAPI
7-3 オンラインリファレンス
7-4 参考文献
第6章 プロセスを理解する
1 はじめに
2 プロセスの由来
2-1 forkとvfork
2-2 コピーオンライト
2-3 clone
3 exec関数
3-1 実行可能スクリプト
3-2 実行可能オブジェクトファイル
3-3 種々雑多なバイナリ
4 waitによるプロセスの同期
5 プロセスフットプリント
5-1 ファイルディスクリプタ
5-2 スタック
5-3 常駐およびロックされたメモリ
6プロセスの制限
7 プロセスとprocfs
8 プロセスを管理するためのツール
8-1 psによるプロセス情報の表示
8-2 書式による詳細なプロセス情報
8-3 psとpgrepによる名前でプロセスを検索する
8-4 pmapでプロセスのメモリ使用量を観察する
8-5 名前を指定してプロセスにシグナルを送る
9 まとめ
9-1 この章で使用したシステムコールとAPI
9-2 この章で使用したツール
9-3 オンラインリソース
第7章 プロセス間通信
1 はじめに
2 通常のファイルを用いたIPC
2-1 ファイルのロック
2-2 ファイルを用いたIPCの欠点
3 共有メモリ
3-1 POSIX APIにおける共有メモリ
3-2 System V APIにおける共有メモリ
4 シグナル
4-1 プロセスにシグナルを送る
4-2 シグナルの処理方法
4-3 シグナルマスクとシグナルハンドル
4-4 リアルタイムシグナル
4-5 sigqueueとsigactionによる高度なシグナル
5 パイプ
6 ソケット
6-1 ソケットの作成
6-2 socketpairを用いたローカルソケットの例
6-3 ローカルソケットを用いたクライアント/サーバの例
6-4 ネットワークソケットを用いたクライアントサーバ
7 メッセージキュー
7-1 System Vのメッセージキュー
7-2 POSIXのメッセージキュー
7-3 POSIXメッセージキューとSystem Vメッセージキューの違い
8 セマフォ
8-1 POSIX APIのセマフォ
8-2 System V APIのセマフォ
9 まとめ
9-1 この章で使用したシステムコールとAPI
9-2 リファレンス
9-3 オンラインリソース
第8章 シェルコマンドによるIPCのデバッグ
1 はじめに
2 開いているファイルと連携するツール
2-1 lsof
2-2 fuser
2-3 ls
2-4 file
2-5 stat
3 ファイルのデータをダンプする
3-1 stringsコマンド
3-2 xxdコマンド
3-3 hexdumpコマンド
3-4 odコマンド
4 System V IPC用のシェルツール
4-1 System V共有メモリ
4-2 System Vメッセージキュー
4-3 System Vのセマフォ
5 POSIX IPCと連携するツール
5-1 POSIX共有メモリ
5-2 POSIXメッセージキュー
5-3 POSIXセマフォ
6 シグナルと連携するツール
7 パイプおよびソケットと連携するツール
7-1 パイプとFIFO
7-2 ソケット
8 inodeを使用してファイルとIPCオブジェクトを識別する
9 まとめ
9-1 この章で使用したツール
9-2 オンラインリソース
第9章 パフォーマンスの調整
1 はじめに
2 システムパフォーマンス
2-1 メモリの問題
2-2 CPU使用率とバスの競合
2-3 デバイスと割り込み
2-4 システムパフォーマンス問題を検出するためのツール
3 アプリケーションのパフォーマンス
3-1 まずはtimeコマンドを使用してみる
3-2 x86infoを使用してプロセッサのアーキテクチャを理解する
3-3 Valgrindを使用した命令効率の分析
3-4 ltraceの導入
3-5 straceを用いてプログラムのパフォーマンスを監視する
3-6 伝統的なパフォーマンスチューニングツール:gcovとgprof
3-7 OProfileの導入
○OProfileの終わりに
4 マルチプロセッサのパフォーマンス
4-2 SMPマシンでのプログラミング
5 まとめ
5-1 この章で扱ったパフォーマンス問題
5-2 この章で使用した用語
5-3 この章で使用したツール
5-4 オンラインリソース
5-5 リファレンス
第10章 デバッギング
1 はじめに
2 最も基本的なデバッギングツール:printf
2-1 printfの使用に伴う問題
2-2 printfの効率的な使用方法
2-3 printfデバッギングの最後に
3 GNUデバッガに慣れよう:gdb
3-1 gdbでコードを実行する
3-2 実行の停止と再開
3-3 データの検査と操作
3-4 gdbで実行中のプログラムにアタッチする
3-5 コアファイルのデバッギング
3-6 gdbによるマルチスレッドプログラムのデバッギング
3-7 最適化コードのデバッギング
4 共有オブジェクトのデバッギング
4-1 いつ、どういう理由で共有オブジェクトを使用するのか
4-2 共有オブジェクトの作成
4-3 共有オブジェクトの位置決定
4-4 共有オブジェクトのデフォルト位置を上書きする
4-5 共有オブジェクトのセキュリティ問題
4-6 共有オブジェクトと連携するためのツール
5 メモリの問題を見つける
5-1 二重解放
5-2 メモリリーク
5-3 バッファオーバーフロー
5-4 glibcツール
5-5 Valgrindを使用したメモリ問題のデバッグ
5-6 Electric Fenceでオーバーフローを見つける
6 型にはまらない方法
6-1 独自のブラックボックスを作成する
6-2 実行時にバックトレースを取得する
6-3 強制的なコアダンプ
6-4 シグナルの使用
6-5 デバッギングにprocfsを使用する
7 まとめ
7-1 この章で使用したツール
7-2 オンラインリソース
7-3 リファレンス |
|
|
|
|