タグ

debugとlinuxに関するWackyのブックマーク (18)

  • Androidアプリのメモリリーク対策手法 | Bescottee

    googleAndroid開発者向け ブログに「Memory Analysis for Android Applications」という記事があったため、自分のために訳しました。参考になれば幸いです。エントリを見るうえで、eclipse の基的な使い方を理解している必要があります。 Androidアプリのメモリ解析手法 Dalvikランタイムは、ガベージコレクトしてくれるかもしれませんが、それはメモリ管理を行わなくてもよいというわけではありません。モバイル端末上でのメモリ利用状況は特に注意を払わなければなりません。投稿では、開発するアプリのメモリ利用状況の把握を支援する Android SDK で提供しているメモリプロファイリングツール群のいくつかを紹介させて頂きます。 メモリ利用時の問題はいくつか明らかになっています。例えば、もしあなたのアプリがユーザの画面タッチ操作のたびにメモ

  • 常駐型サーバープログラムのデバッグ手法

    BOOK: WEB+DB Press TITLE: 常駐型サーバーのデバッグ手法(ドラフト版) AUTHOR: (株)プリファードインフラストラクチャー 太田一樹 *注: この文章はWEB+DB PRESS Vol.48に掲載された記事のドラフト版です はじめに 今回はデバッグ関連特集ということで、常駐型サーバープログラムを作成する際のハマりどころやそれに対する解析方法・解析ツール・対策を、実際の経験を交えながら紹介したいと思います。 筆者は(株)プリファードインフラストラクチャーでインメモリ分散検索エンジン「Sedue (セデュー)」を開発しています。モバイル向け検索エンジン「エフルート」や、2008/11/6にリニューアルされました「はてなブックマーク2」などの検索バックエンドとして使われております。 この検索エンジンはいくつかの常駐型サーバープログラムから構成されており

  • c++のデバッグをするならgdb-6.8を使いましょう。 - ぴょぴょぴょ? - Linuxとかプログラミングの覚え書き -

    2008年の3月にリリースされたgdb-6.8の目玉機能の一つに「C++サポートの強化」があります*1。この機能を使うと、STLやboostのようなテンプレートを使ったコードのデバッグがかなり楽になります。C++使いの方は、是非gdbを6.8にupgradeしましょう。 具体的に、以下のようなコードを使って、「C++サポートの強化」について説明します。 #include <iostream> using namespace std; template <typename T> class A { public: void func() { cout << sizeof(T) << endl; } }; int main() { A<int> integer; A<double> real; integer.func(); real.func(); return 0; } このコードに対して

    c++のデバッグをするならgdb-6.8を使いましょう。 - ぴょぴょぴょ? - Linuxとかプログラミングの覚え書き -
    Wacky
    Wacky 2008/04/24
    gdb-6.8の目玉機能の一つに「C++サポートの強化」があります*1。この機能を使うと、STLやboostのようなテンプレートを使ったコードのデバッグがかなり楽になります
  • ダンプされたcoreを元にエラー原因を解析する方法 - Hello, world! - s21g

    Railsアプリを書いてる場合はあまり関係ないですが、 セグメンテーションエラー(SEGV)などに遭遇した場合に、 原因を調査する方法を紹介します。 まずは、coreを吐かせるためにulimitの設定をします。

  • 使いながら覚えるGDB

    はじめに プログラムのデバッグと言えばひたすらprintfを挿入しまくっていたある日、 デバッガなる便利な代物があるということを知った。なんでもプログラムを一行 ずつ実行できて、変数の値をその場で確認できるらしい。これは是非使ってみねばと 思い、UNIX環境で使えるGDBというデバッガを試してみた。が、何がなんだかさっぱり 分からない。Webを検索するとマニュアルの日語訳が見つかった。これで勉強すれば 使えるようになるかも、と読み始めるも、いきなりm4がどうのこうのだの、意味不明 の文章が続く…。 これは私がGDBを使い始めた時の話だが、似たような経験を持っている人が他にもいる と思う。 GDBのマニュアルは初心者にはすこし敷居が高い。 GDBに限らずマニュアルというものは初学者が参考書として用いるのには 適していない。というのも、マニュアルの類は情報量が多い分、重要な部分を 見つけ出す

  • gdb tips - bkブログ

    gdb tips gdb を使う上で便利な tips を紹介します。基的な使い方をマスターしている人向けです。 .gdbinit の設定 ホームディレクトリに .gdbinit を置いておくと、gdb の起動の際に読み込まれます。私の場合は次のような設定をしています。 set history save on set history size 10000 set history filename ~/.gdb_history set print pretty on set print static-members off set charset ASCII set history から始まる最初の 3行は履歴に関する設定です。それぞれ、 gdb のコマンドラインの履歴をファイルに保存する、保存する行は最大 10000 行、ファイル名は ~/.gdb_history 、という意味になります。

    Wacky
    Wacky 2006/07/17
    gdb を使う上で便利な tips を紹介します。基本的な使い方をマスターしている人向けです。
  • gdb hacks - ハードウェアのデバッグ機能を使う (前編) - ほげめも

    gdb hacks 第 5 回。プロセッサの中にはデバッグ支援機能をハードウェアで持つものがあり、例えば IA-32 アーキテクチャでは 8 のデバッグレジスタ (DR0-DR7) というものが用意されています。gdb はこれをどのように使用しているかを見てみます。 IA-32 のデバッグ機能については Intel のマニュアル IA-32 Intel® Architecture Software Developer's Manual, Volume 3B: System Programming Guide, Part 2 の CHAPTER 18 Debugging and Performance Monitoring に完全な解説があります。 はしょって説明すると、DR0-DR3 の 4 つのレジスタで指定したリニアアドレスの示すメモリ領域にプロセッサのアクセスがあると、INT 1

    Wacky
    Wacky 2006/04/16
    IA-32 アーキテクチャでは 8 本のデバッグレジスタ (DR0-DR7) というものが用意されています。gdb はこれをどのように使用しているかを見てみます。
  • gdb hacks - gdbcalc スクリプト - ほげめも

    gdb hacks 第 4 回。前回は gdb 電卓で使えるようになった数学関数のかっこ悪さについて不満を述べましたが、それを一部解決する方法を思いついたのでまとめておきます。 当初は sqrt といった関数シンボルに新たな型情報を設定する方法があるのではないかと思い、gdb のソースなどを調べていたのですが、どうもそんな都合のいい方法はなさそうなので、あきらめて別の方法を考えました。 gdb では convenience variable という $ で始まる任意の名前の変数を使うことができますので、それに関数シンボルのアドレスを関数ポインタ型でキャストして代入してみます。 (gdb) set $sqrt = (double (*)(double)) sqrt (gdb) set $pow = (double (*)(double, double)) pow (gdb) ptype $s

    Wacky
    Wacky 2006/04/16
    gdb では convenience variable という $ で始まる任意の名前の変数を使うことができますので、それに関数シンボルのアドレスを関数ポインタ型でキャストして代入してみます
  • gdb hacks - gdb を電卓の代わりに使う - ほげめも

    gdb hacks 第 3 回。今回は以下のトピックを扱います。 gdb を電卓の代わりに使う gdb が扱うシンボルの型情報 筆者は gdb を電卓代わりによく使っています。以下のように出力フォーマットを手軽に指定できること、C の表現式がそのまま使えること、前の計算結果を簡単に参照できることなど、他の電卓プログラムにはない魅力があります。bc や irb と比較しても gdb はよりプログラマ向きの電卓なのではないかと思います。 % gdb (gdb) p 123+456+789 $1 = 1368 (gdb) p 123+0456+0x789 $2 = 2354 (gdb) p/o $2 $3 = 04462 (gdb) p/x $3 $4 = 0x932 (gdb) p/t $4 $5 = 100100110010 (gdb) p/x 'a' $6 = 0x61 (gdb) p/c

    Wacky
    Wacky 2006/04/16
    gdb を電卓の代わりに使う,gdb が扱うシンボルの型情報
  • gdb hacks - gdb とターゲットプロセスとの通信を観察する - ほげめも

    gdb hacks 第 2 回。今回は以下のトピックを扱います。 gdb が関数の呼び出しでターゲットプロセス中に作成するデータ構造 gdb とターゲットプロセスとの通信を観察する方法 サンプルデバッグセッションのログを gdb_target_debug.txt に用意していますので参照してください。実験環境は例によって i386 の Debian GNU/Linux (sid) です。 gdb とターゲットプロセスとのやりとりは、以下のように 3 つほどデバッグスイッチを有効にすると観察することができます (infrun デバッグスイッチは gdb 6.4 以降から使えます)。 119 (gdb) set debug target 1 120 (gdb) set debug infrun 1 121 (gdb) set debug lin-lwp 1 122 (gdb) p chdir(

    Wacky
    Wacky 2006/04/16
    gdb が関数の呼び出しでターゲットプロセス中に作成するデータ構造,gdb とターゲットプロセスとの通信を観察する方法
  • GDB | ファイヤープロジェクト

    Wacky
    Wacky 2006/04/15
    GDBの使い方を調べてみた.将来的にはデバッガを使えるようになって効率的な開発をしていくのだ.
  • gdb hacks - ターゲットプロセス内の関数を呼び出す - ほげめも

    gdb は ptrace(2) システムコールの便利なフロントエンドインタフェースとして使えます。特にターゲットプロセス内の関数を式の中で呼ぶことができる機能は強力で、ptrace の attach 機能と組み合わせて使えば、動作中のプロセスに対してちょっかいを出すことが簡単にできます。 単純な活用例をいくつか紹介します。以下は i386 の Debian GNU/Linux (sid) のシステムで実験しました。gdb は 6.4 より前のバージョンではうまく動かない例があります。 % ps x | grep firefox 3616 ? Rl 19:40 /usr/lib/firefox/firefox-bin -a firefox % gdb -q -p 3616 (gdb) p chdir("/") [Switching to Thread -1221168480 (LWP 361

    Wacky
    Wacky 2006/04/15
    ターゲットプロセス内の関数を式の中で呼ぶことができる機能は強力で、ptrace の attach 機能と組み合わせて使えば、動作中のプロセスに対してちょっかいを出すことが簡単にできます。
  • 「止まる」「遅い」を元から絶つ!オープンソースのトラブル解決第1回 アプリケーション異常終了

    止まる,性能が出ない…システム開発に携わる人なら誰もがぶつかった経験のあるトラブルでしょう。特に,通常は問題がないのに,負荷が高くなったり,長時間連続稼働した時にだけ発生するトラブル,さらにどういった場合に発生するのかわからないトラブルはやっかいです。 でも,原因を突き止める方法はあります。この連載では,そういったトラブルをタカハシくんとスズキさんの2人といっしょに解決していきましょう。 タカハシくんは,IT企業の若手エンジニア。元気はあるのですが,おっちょこちょいなのが欠点です。LinuxでC言語やJavaを使った開発には少し自信が出てきましたが,トラブルがあるとなかなか原因がわからず,先輩のスズキさんに教えを請う毎日です。スズキさんはこの道ン十年,汎用機でのアプリケーション開発の経験もあるベテラン・エンジニアです。 第1回目は,高負荷時にアプリケーションが異常終了するというトラブルです

    「止まる」「遅い」を元から絶つ!オープンソースのトラブル解決第1回 アプリケーション異常終了
    Wacky
    Wacky 2006/03/04
    ltraceとコアダンプの使い方
  • vimrc diary / 2006-02 - なぜメールの後ろに全文引用するのはダメか

    日頃より楽天のサービスをご利用いただきましてありがとうございます。 サービスをご利用いただいておりますところ大変申し訳ございませんが、現在、緊急メンテナンスを行わせていただいております。 お客様には、緊急のメンテナンスにより、ご迷惑をおかけしており、誠に申し訳ございません。 メンテナンスが終了次第、サービスを復旧いたしますので、 今しばらくお待ちいただけますよう、お願い申し上げます。

    Wacky
    Wacky 2006/02/18
    MinUnitは、世界一導入の簡単なC用のUnit Testフレームワークだろう。コードはわずか3行しかない。
  • ltrace で共有ライブラリの関数呼び出しをトレースする - bkブログ

    ltrace で共有ライブラリの関数呼び出しをトレースする ltrace は共有ライブラリの関数呼び出しをトレースする Linux 用のツールです。システムコールをトレースするstrace と同様に、デバッグに大変役立ちます。 ltrace は Debian GNU/Linux の場合は sudo apt-get install ltrace でインストールできます。 ltrace の使い方は簡単です。基的には ltrace コマンドの引数にトレースしたいコマンドとその引数を並べれば OK です。デフォルトでは ltrace のメッセージは標準エラーに出力されます。これをファイルに出力させるには -o オプションを用います。たとえば、次のように実行します。 % ltrace -o log.txt wget https://www.codeblog.org/ この例では wget が ht

    Wacky
    Wacky 2006/02/18
    ltrace は共有ライブラリの関数呼び出しをトレースする Linux 用のツールです。システムコールをトレースするstrace と同様に、デバッグに大変役立ちます。
  • IBM Developer

    IBM Developer
  • ValgrindでApacheモジュールのメモリバグを見つけよう - ひげぽん OSとか作っちゃうかMona-

    mod_uploaderの作者さんがまとめている開発Tips(http://acapulco.dyndns.org/mod_uploader/module_dev.htm)にあったデバッグ方法を試してみました。 Valgrind http://valgrind.org/ Valgrindはメモリ周りのバグや、スレッド系のバグを自動的に検出してくれるツールです。 インストールは ./configure make make install で完了です。 a.out(-gオプションでコンパイルしてください)のメモリ周りのチェックを行う場合は valgrind --leak-check=yes a.out とやると、こんな結果が出力されてメモリリークしている場所がずばり表示されます。 ==19182== 40 bytes in 1 blocks are definitely lost in los

    ValgrindでApacheモジュールのメモリバグを見つけよう - ひげぽん OSとか作っちゃうかMona-
    Wacky
    Wacky 2005/12/31
    mod_uploaderの作者さんがまとめている開発Tips(http://acapulco.dyndns.org/mod_uploader/module_dev.htm)にあったデバッグ方法を試してみました。
  • IBM Developer

    IBM Developer
    Wacky
    Wacky 2005/12/18
    シグナル・ハンドラーを使用してキャプチャーしたデータの解析に集中することで、デバッグで最も時間のかかる部分、すなわちバグの発見をスピードアップすることができます。
  • 1