タグ

debugに関するsnailramperのブックマーク (22)

  • C++ のプログラムのデバッグを楽にする方法

    Google が公開しているソフトウェアの解説シリーズ(→その1 , その2)の続きです。今回は google-glog を使ってスタックトレースを表示する方法についてご紹介します。 C++ でプログラムを書いているとよく遭遇するのがセグメンテーション違反というエラーです。不正なアドレスへのアクセスなどによりセグメンテーション違反が起きると、通常、 UNIX 系の OS では SIGSEGV というシグナルによってプログラムが終了するとともに、 core というファイルが作られます。 core ファイルにはデバッガから参照できるいろいろな情報が残っていますが、多くの場合に役に立つのは、スタックトレースという情報です。スタックトレースを見れば、プログラムがどこでクラッシュしたのか、どのような関数を経由してそこにたどり着いたのかがわかります。プログラムがクラッシュした箇所を特定できれば、単純な

    C++ のプログラムのデバッグを楽にする方法
  • 常駐型サーバープログラムのデバッグ手法

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

  • 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-
  • ウノウラボ Unoh Labs: php で 簡単にデバッグする方法

    GT Nitro: Car Game Drag Raceは、典型的なカーゲームではありません。これはスピード、パワー、スキル全開のカーレースゲームです。ブレーキは忘れて、これはドラッグレース、ベイビー!古典的なクラシックから未来的なビーストまで、最もクールで速い車とカーレースできます。スティックシフトをマスターし、ニトロを賢く使って競争を打ち破る必要があります。このカーレースゲームはそのリアルな物理学と素晴らしいグラフィックスであなたの心を爆発させます。これまでプレイしたことのないようなものです。 GT Nitroは、リフレックスとタイミングを試すカーレースゲームです。正しい瞬間にギアをシフトし、ガスを思い切り踏む必要があります。また、大物たちと競いつつ、車のチューニングとアップグレードも行わなければなりません。世界中で最高のドライバーと車とカーレースに挑むことになり、ドラッグレースの王冠

    ウノウラボ Unoh Labs: php で 簡単にデバッグする方法
  • dtrace を使ったシステムコールのトレース - IT戦記

    dtrace とは Mac OS X Leopard から導入された、プログラムを書き換えることなくプログラムの情報を監視(トレース)できる便利ツールです。 使い方 たとえば、 vim という名前のプロセスからシステムコール stat, open, stat64 されたときに第一引数(ファイル名)を監視するには以下のようにします。 $ sudo dtrace -n "syscall::open:entry, syscall::stat:entry, syscall::stat64:entry / execname == \"vim\" / { trace(copyinstr(arg0)) } " 説明 まず、 -n というのは「probe」の「name」を指定して dtrace する!という意味です。 $ sudo dtrace [-n [[[ provider: ] module: ]

    dtrace を使ったシステムコールのトレース - IT戦記
  • カーソルの位置にデバッグ用のprintfを挿入 - higepon blog

    printfデバッグをする前にバグを出すな、デバッガを使え等のご意見があるかもしれませんが。。 cppのソースを編集中に、C-c dをすると printf("%s %s:%d\n", __func__, __FILE__, __LINE__); が挿入されます。 ソースを見れば分かると思いますがprintfでなくても何でもできます。 ちなみに手元ではprintfではなくTRACEマクロにしてます。 (defun my-insert-printf-debug () (interactive) (insert-string "printf(\"%s %s:%d\\n\", __func__, __FILE__, __LINE__);") (indent-according-to-mode) ) (add-hook 'c++-mode-hook (function (lambda () (def

    カーソルの位置にデバッグ用のprintfを挿入 - higepon blog
  • ダンプされたcoreを元にエラー原因を解析する方法 - Hello, world! - s21g

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

  • プログラミングの光景:第1回 デバッグについて|gihyo.jp

    プログラミングに関する雑多なあれこれ 今号から、「⁠プログラミングの光景」と題して連載することになった高林と申します。プログラミングは趣味として、仕事として、かれこれ10年ほど行ってきました。連載ではプログラミングに関する雑多な事柄について書く予定です。 第1回は、プログラミングとは切っても切れない関係にある「デバッグ」について取り上げてみようと思います。 デバッグの時間 ソフトウェア開発において、デバッグに要する時間は相当のものです。プログラマとしては「いやいや、自分はそれほどデバッグに時間を使ってないよ」と否定したいところですが、冷静に考えてみると、現実には自分が考えているよりも(そうであってほしいと考えているよりも)デバッグに時間を要しているように思えます。それに、バグは他人が書いたコードに混入していることもあるので、たとえ自分がバグを入れなくてもデバッグするはめになります。 デバ

    プログラミングの光景:第1回 デバッグについて|gihyo.jp
  • PHPのデバッグを補助してくれるFirefoxエクステンション「Xdebug Helper」:phpspot開発日誌

    Xdebug Helper :: Firefox Add-ons Tool to start/stop debug with PHP's Xdebug... PHPのデバッグを補助してくれるFirefoxエクステンション「Xdebug Helper」。 インストールするとFireBugのようにステータスバーにアイコンが表示されXdebugによるデバッグを補助してくれるようです。 Firefox2.0〜インストール可能のようです。 関連エントリ FireFoxでのPHP開発を手助けする「FirePHP

  • php,ruby,perl,pythonなどの言語で『Webアプリケーション』を作成している方に質問です。…

    php,ruby,perl,pythonなどの言語で『Webアプリケーション』を作成している方に質問です。 日々の開発の際、デバッガを使われているのでしょうか。 自分の周囲だと俗に言うprintfデバッグ+ブラウザ上の目視確認のみしか使われておらず、ツールを使用しておりません。 これは珍しいケースなのか、あるいは巷ではWeb開発でもデバッガは当たり前すぎて話題にすらならないのか、どちらなのか、ご意見、または使用言語と実践しているデバッグ方法を教えてください。

  • 「実演テスト駆動開発」 WEB+DB PRESS Vol.35特集 特設サイト

    WEB+DB PRESS Vol.35の特集1「実演!テスト駆動開発」の特設ページです.テスト駆動開発(TDD)の実演ムービーや誌面サポート情報などを掲載しています. 更新履歴 2006年10月24日 実演ムービーの追加 タスク2「サーブレットのアクセスURLからDAOの名前を抽出する」の実演ムービー3を追加しました. 環境構築ムービーの追加 Subversion環境の構築ムービー3を追加しました. 補足情報の追加・変更 第2章~第8章の各章終了時点でのサンプルコードを公開しました.また,すでに公開済みだった第8章完全版のコードも差し替えましたので,お手数ですが再度ダウンロードしてください. 補足情報の追加 「テストフィルタ機能,受け入れテスト実行の自動化機能について」を追加しました. 補足情報の追加 「著者のEclipseテンプレートを公開!」を追加しました. 誌面訂正情報の掲載 第

  • 【ハウツー】FindBugsで片っ端からバグつぶし (1) まずはインストール | エンタープライズ | マイコミジャーナル

    JavaのクラスファイルやJarファイルを解析し、ソフトウェアの不具合を発見するツールにFindBugsがある。FindBugsの概要については先のレビューを参照していただきたい。ここでは実践編としてFindBugsのさまざまな使い方を紹介する。 インストール FindBugsのインストールは成果物を展開するだけ。FindBugsのサイトから成果物をダウンロードし、適当な場所に展開する。たとえばfindbugs-1.1.0.tar.gzファイルをダウンロードしたなら、展開したディレクトリは図1.1のようになる。bin以下には実行に必要なスクリプト類が、lib以下にはライブラリJarファイルが納められている。doc以下はWebと同じドキュメントだ。 図1.1 FindBugs成果物 図1.2 FindBugs成果物 bin以下に実行のためのスクリプトが納められている bin以下のファイルは基

  • 使いながら覚えるGDB

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

  • Failmalloc

    Welcome to failmalloc. This software generates a shared library which can be loaded by LD_PRELOAD or linked at compilation time. The idea behind failmalloc is to demonstrate what really happens if memory allocation fails. Unfortunately, most programs in this world are not robust, mostly because programmers are careless, but sometimes because programmers are too brave. Regardless of whatever reason

  • 普通のやつらの下を行け: C でバックトレース表示 - bkブログ

    普通のやつらの下を行け: C でバックトレース表示 普通のやつらの下を行けの第2回として、今回は glibc の関数を使って C でバックトレース (スタックトレース) の表示を行ってみます。 バックトレースとは バックトレースとは、大ざっぱに言うと、現在の関数に至るまでの道筋です。たとえば、次の Ruby プログラムを実行すると、 1 / 0 の行で例外が発生して、バックトレースの表示とともにプログラムは異常終了します。 def foo 1 / 0 end def main foo end main この例では main から foo を呼び foo の中の 1 / 0 の部分で例外が発生しています。 % ruby divide-by-zero.rb divide-by-zero.rb:2:in `/': divided by 0 (ZeroDivisionError) from div

  • http://www.h7.dion.ne.jp/~matsu/feature/gdb/

  • Life with Cygwin

    沖ソフトウェア株式会社は、沖通信システム株式会社および株式会社沖インフォテックと平成22年10月1日をもって合併いたしました。新会社名は、株式会社OKIソフトウェアとなります。3社が行っております事業は新会社にて従来通り継続いたします。

  • memo.xight.org - JavaScriptのデバッグ方法

    Venkman JavaScript Debugger FirefoxのExtention. JSUnit メソッド 内容 assert([コメント], booleanValue) assertTrueと同じ assertTrue([コメント], booleanValue) booleanValueがtrueか assertFalse([コメント], booleanValue) booleanValueがfalseか assertEquals([コメント], value1, value2) value1 == value2か assertNotEquals([コメント], value1, value2) value1 != value2か assertNull([コメント], value) value == nullか assertNotNull([コメント], value) value

  • モノーキ〜デバッグパターン

    デザインパターンを勉強していて、ふとデバッグにもパターンがあるよな。 と思って作ってみました。 これって、どこかに協力を仰ぎたいけど、誰に頼むんだ? (結果的に協力してもらいました。thanks XPMLの皆さん、lemonさん) 何かおもいついた方はこちらへメールか、掲示板へ プログラマ用セキュリティホールパターンってのが欲しいな 例えばSQL injectionとかいうセキュリティホール。 こんなの知らないと絶対やってしまう。 OSとかの設定ではなく、プログラマの設計において注意するセキュリティホールのパターンが欲しい。 集計などはやってもいいので、どこかで有志を募って集めてくれませんかね? ○デバッグパターンについて ・デバッグパターンとはプログラマから観測できる現象とそれに対する原因と対策をパターンとして登録したものです。中にはアンチパターンという、やってはいけないパターンも存在し

  • Venkman Introduction - MDC

    Firefox、Mozilla Suite、Netscape 7.x など、多くの Mozilla ベースの製品を使用する Web 開発者は新たに強力なツールが利用できます。しばらく前から「Venkman」と呼ばれる JavaScript デバッガが Mozilla ブラウザ、Web コミュニティ、スクリプト開発者に利用されています。この記事では JavaScript デバッガを Web アプリケーションや Web ページスクリプティングで使用するための概要を説明すると共に、簡単な実践例を用意しています。この導入は Venkman と JavaScript デバッグについての一連の記事の第一弾です。例えあなたが既に Venkman を使用していても、ここに書かれた機能、処理、手法を知ることで、Web 開発やデバッグに一層の自信が持てるようになるはずです。 Venkman は画面表示とコンソ