メモ.リリークの調査をするときのメモ。
メモリリーク検出:mtrace編 より要約
gccの場合、mtraceというツールが使える。
使用手順は
1.環境変数:MALLOC_TRACE=[ログファイル名]を設定
2.プログラム改造:関数 mtrace()、 muntrace() を挿入。(この間のmalloc, freeがカウントされる)
3.コンパイル: -g オプションをつける。(gcc -g hoge.c)
4.ログ解析:mtrace [プログラム名] [ログファイル名]
簡易mallocデバッグメモには、mallocがらみの環境変数の解説等が載っている
「Linuxのデバッグ手法をマスターする」では各種ツールの有効な利用方法がまとめられている。
本稿では、Linuxプログラムをデバッグするための4通りのシナリオを紹介します。シナリオ1では、メモリー割り当ての問題を扱うサンプル・プログラムを2つ使用します。MEMWATCHとYet Another Malloc Debugger (YAMD) というツールを使ってデバッグを行います。シナリオ2では、Linuxのstraceユーティリティーを使用します。このユーティリティーでは、システム・コールとシグナルをトレースすることで、プログラムの問題箇所を検出することができます。シナリオ3では、LinuxカーネルのOops機能を使って、セグメンテーション障害を解決するとともに、同じ問題をGNUデバッガー (gdb) で解決するために、カーネル・ソース・レベル・デバッガー (kgdb) をセットアップする方法を紹介します。kgdbプログラムは、シリアル接続経由でのLinuxカーネル・リモートgdbです。シナリオ4では、Linuxで利用できるmagic key sequenceを使って、ハングアップを起こしているコンポーネントについての情報を表示します。
目次: 一般的なデバッグ方針 シナリオ1: メモリー・デバッグ・ツール MEMWATCH YAMD Electric Fence シナリオ2: straceの利用 シナリオ3: gdbおよびOopsの利用 kgdb kgdbを使ってカーネルの問題をデバッグする Oops分析 kdb シナリオ4: magic key sequenceを使ってバック・トレースを行う 結論 参考文献 著者について 記事の評価
メモリーとカーネルに関する便利なデバッグ・ツール
Linuxでデバッグ・ツールを使ってユーザー・スペースやカーネルの問題を追跡するには、いろいろな方法があります。以下に列挙したツールや手法を使ってソース・コードをビルドし、デバッグします。ユーザー・スペース用のツール:
- メモリー・ツール: MEMWATCH、YAMD
- strace
- GNUデバッガー (gdb)
- Magic key sequence
カーネル用のツール:
- カーネル・ソース・レベル・デバッガー (kgdb)
- 内蔵のカーネル・デバッガー (kdb)
- Oops
この記事にトラックバックする(FC2ブログユーザー)