タグ

GDBに関するBoBppのブックマーク (15)

  • gdbを使ったrubyのデバッグ - クックパッド開発者ブログ

    技術部の国分 (@k0kubun) です。 先日byebugの高速化を行っていた最中、変更を加えたbyebugを使っていると一定の確率でrubyがSEGVするバグを発見しました。 私はC言語のコードのデバッグの経験はなかったのですが、デバッガの使い方を調べながらSEGVの原因調査を行いパッチを送ったところ無事取り込まれ、最新の高速なbyebugが安全に使えるようになりました。 その際、ruby自体をデバッグするために必要な情報が分散していて大変だったので、まだrubyのデバッグをしたことがないけれどやってみたいという人を対象に、gdbというデバッガを使ったrubyのデバッグの方法を紹介します。 デバッグ用にrubyをビルドする デバッグ時に変数名やソースコードなどの情報を見るためには、最適化オプションをオフにしてデバッグ用にrubyをビルドしておく必要があります。 rubyのデバッグ用ビル

  • gdb: No struct type named runtime.rtype · Issue #9326 · golang/go

    You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

    gdb: No struct type named runtime.rtype · Issue #9326 · golang/go
  • Installing GDB on OS X Mavericks – Neil Traft

    If you prefer watching videos to reading articles, Cody Henrichsen has created a video walkthrough of this procedure. With its new OS release, Apple has discontinued the use of GDB in OS X. Since 2005 Apple has steadily been moving away from the GNU toolchain in favor of LLVM. This means that Xcode now uses LLDB instead. LLDB looks to be a very nice replacement for GDB, and I hope to use it in the

    Installing GDB on OS X Mavericks – Neil Traft
  • Tracking down a memory leak in Ruby's EventMachine

    At Stripe, we rely heavily on ruby and EventMachine to power various internal and external services. Over the last several months, we’ve known that one such service suffered from a gradual memory leak, that would cause its memory usage to gradually balloon from a normal ~50MB to multiple gigabytes. It was easy enough to work around the leak by adding monitoring and restarting the process whenever

  • gdb の使い方・デバッグ方法まとめ

    たとえば、変数 var の値を2進数で表示したい場合は、次のように指定します。 (gdb) p/t var 一覧表示 whatis 変数の型を調べる。 info b 今設定しているブレークポイントの一覧を表示 セグメントフォルトをした後に利用すれば、どの関数で発生したか確認できます。 info stack 関数の呼び出しスタックの一覧を表示 info Thread 存在しているスレッドの一覧を表示 異なるアドレスにおける処理継続 以下のコマンドを使用することで、ユーザが選択したアドレスにおいて実行を継続させることができます jump linespec linespecで指定される行において、実行を再開 jump *address addressで指定されるアドレスにある命令から、実行を再開 アドレスが分かっている場合のメモリリーク出力 xはhexの意味です。 (gdb) p (char*)

    gdb の使い方・デバッグ方法まとめ
    BoBpp
    BoBpp 2013/12/11
    マルチスレッドとかー
  • CoreからRubyのバックトレースを表示するgdbruby.rbを作った

    gdbperl.plというスクリプトがあります。そんkする樋口証さん作の、gdbを操作してPerlのプロセスのバックトレースを取るツールです。生きているプロセスだけではなく、coreを取っておけばそのcoreからバックトレースが取れるのが特徴です。 gcoreというコマンドが/usr/binあたりにあって、これを使えば走っているプロセスのcoreを取得することができます。よって、番環境で気軽にcoreを取ってgdbperl.plにかけることによって、刺さっているポイントを見つけたりすることができます。超便利。 くわしくは、Perlスクリプトをgdbでデバッグを参照ください。 んで、その便利なgdbperl.plをRubyに移植してみました。その名もgdbruby.rb。単純。 gdbruby.rb 使い方とか Rubyはデバッグシンボル付きのものをご用意ください。 生きているプロセスにア

    CoreからRubyのバックトレースを表示するgdbruby.rbを作った
  • Using GDB to Inspect a Running Ruby Process

    This job shouldn’t be taking this long! That’s not a great thing to have to say, is it? However, I bet you’ve said it before and may not have immediately know why. With liberal use of puts and maybe pry, you can figure out what a problem might be next time you run it, but sometimes you need to figure out what that problem is right now. As it turns out, and I know this is a shocker, Ruby processes

    Using GDB to Inspect a Running Ruby Process
    BoBpp
    BoBpp 2013/10/22
  • gdbでxsをデバッグ - フリーフォーム フリークアウト

    移転しました http://please-sleep.cou929.nu/20090805.html

    gdbでxsをデバッグ - フリーフォーム フリークアウト
    BoBpp
    BoBpp 2010/07/12
  • LunaTear: debuginfo.rpm

    RedHat9以降のSRPMからリビルドすると通常のRPMパッケージの他にdebuginfoという名前のRPMファイルが出来るようになりました。 今まで特に気にも止めず無視していたんですが「これって何?」と尋ねられたので調べてみたところ GDBは、アプリケーション用のデバッグ情報が個別ファイルから読み込まれるように 強化されています。これにより、バイナリからデバッグ情報を抽出して、補足パッケージに入れることができるようになりました。Red Hat Linux 9 の開発中、"debuginfo"パッケージ は、、特別のRPMマクロをインプリメントしてほぼすべてのパッケージに生成されました。デフォルトでは、Red Hat Linux 9 でのRPMマクロの設定は"debuginfo"パッケージ を生成します。パッケージを構築していて、"debuginfo"パッケージを生成したくない場合は、~

    BoBpp
    BoBpp 2009/11/27
  • TosHiki - gdbでもっと調べる

    sample2では、sample1.c と同じく、確実にセグメンテーション・フォルトを起こすために sub2 関数で明示的に 0 を返すようにしています。来は、その直前のコメントアウトしている部分のように、なんらかのアドレスを確保して返す関数。 sample2.c また、-g オプションを付けてコンパイルし、実行形式を実行してコアダンプさせる。そして、gdb を起動してスタックトレースを確認する。 実行結果 今回は、libc.so.6 というライブラリの中の _IO_str_overflow_internal という関数でエラーが発生しているようである。 backtrace コマンド この関数がどのように呼び出されているのかを見てみる。 (gdb) bt #0 0x42070fa4 in _IO_str_overflow_internal () from /lib/tls/libc.so

    BoBpp
    BoBpp 2009/11/19
  • GDBで歴史をさかのぼれるように!なりました! GDB 7.0 の新機能Reverse Debuggingを使ってみた - 日記を書く [・w・] はやみずさん

    Twitter上で、@alohakun が言及していた GDB の reverse debugging の機能を使ってみました。 GDB にトレースと逆実行機能入ったのか。 http://www.gnu.org/software/gdb/news/reversible.html http://twitter.com/alohakun/status/4481139191 まずは簡単な使い方を説明したあとに、インストール方法を説明します。 こんなときに便利 「変なこと」が起きている大体の場所がわかっているとき デバッグ中に、大体どこで変なことが起きているかはわかっているけど、細かい場所は特定できていないとき、reverse debuggingが効果を発揮します。 GDBでステップ実行をしていて、「しまった!行きすぎた!」という経験はよくあると思います。こういうとき、今まではプログラムの実行を最

    GDBで歴史をさかのぼれるように!なりました! GDB 7.0 の新機能Reverse Debuggingを使ってみた - 日記を書く [・w・] はやみずさん
  • Script Laboratory [メモ:gdbのコマンド]

    Script Laboratory [メモ] MENU TOP (T) ABOUT (A) CGI / PHP (C) 日記 (D) メモ (M) BOOKMARK (L) gdbのコマンド たまにgdbで自分の作ったプログラムをデバッグするときに、コマンドを忘れていたりしてパニックに陥るので、自分用のメモ程度に・・・。 list ソースコードを表示する。 (gdb) list sample.c:10 → sample.cの10行目あたりを表示 5 #define LED3 0x40 6 7 void wait() 8 { 9 static int status; 10 static unsigned int t; 11 12 do{ 13 status = *DGA_CSR20 & TT0_BIT; 14 t = (*DGA_CSR13 & 0x00ffffff); (gdb) pr

  • よく使うコマンド

    ここでは基的なコマンドのうち、使用頻度が高いものを紹介する。 コマンドの書式(引数とか)を全てを網羅しているわけではない。 もっと詳細な情報が欲しくなったらGDBのマニュアルを見てみよう。 もしくはGDBプロンプト上で"help [コマンド名]"と入力してみてもいい。各コマンドに関する ヘルプが(英語ではあるが)表示される。 プログラムの実行、停止、継続 run args 前のセクションでも紹介したが、プログラムを実行するコマンドである。runにはプログラムに 与える引数argsを指定することができる。例えば、プログラムの引数にhoge, fugaを指定したければ 次のようにする。 (gdb) run hoge fuga ちなみにリダイレクトも利用できる。GDBを実行する仮想コンソールと、もう1つ仮想コンソールを用意 すれば、リダイレクトを用いてGDBの出力とプログラムの出力を分けること

  • ユメのチカラ: gdbの実践的使い方

    「大規模ソフトウェアの効率的な理解(その1、2、3、4、5、6)」などという大袈裟なタイトルでブログを書いたが、今回は一気に実践編ということでフリーソフトウェア定番のデバッガ gdb の実践的使い方について記す。 プログラマの日々には、プログラムを書くためのエディタ、プログラムをコンパイル(あるいは実行)するためのコンパイラ(あるいはインタプリタ)、そしてプログラムを理解するためのデバッガという三種の神器が必須である。 この定番はわたしの場合xemacs/gcc/gdbである。前々職(DECという会社に務めていた)の場合、それぞれプロプライアトリな物を使っていたので微妙に異なるがやることは一緒である。 gdbは何のために利用するかというと、プログラムを理解するために利用する。デバッガなんだからデバッグのために利用するというのは、gdbの底力の半分も利用していないと言ってさしつかえない。 g

  • GDBこまんど

    GDBを起動させるには、コマンドプロンプト上で gdb progname gdb : gdbを起動させるコマンド progname : デバッグするプログラムの名前 とすることで起動できる。 このとき、デバッグしたいプログラムがカレントディレクトリにない場合は、そのプログラムがある場所までのパスも記述すること。 GDB上でプログラムを走らせる(実行する)には run args... run : GDBを起動させるときに選択したプログラムを実行する args : プログラムに渡す引数(ない場合は指定しなくてもよい) ... : 引数が複数指定可能であることを示している。プログラムに必要な数だけ指定すること とすると実行することができる。 エラーなくプログラムが終了するとproglam sacseccefle とメッセージが出る。 以上がGDBの起動とプログラムの実行に使用するコマンドです。

  • 1