タグ

gdbに関するmogwaingのブックマーク (5)

  • 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とかプログラミングの覚え書き -
  • 普通のやつらの下を行け: 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

  • gdbでSTLのコンテナの値を表示する方法 - pyopyopyo - Linuxとかプログラミングの覚え書き -

    STLを使ったコード,たとえば std::vector<int> array;というコードがあったとして,gdbでデバッグ中に array[0] の値を確認したい場合はどうするか?実はこれが結構面倒なのだ. gdbでデバッグ中に,変数の値を確認したい場合は print コマンドを使う.例えば int a=12;というコードがあって,変数 a の値を表示させたい場合は gdb のコマンドラインで (gdb) print a とする.printコマンドは p と省略して記述できるので,通常は" p a "で確認する.さらに,変数が配列の場合なら "p 変数名[添字]" となる. 以上をふまえると, std::vector<int> array;というコードがあったとして,先頭の array[0] の値を確認したい場合は (gdb) p array[0]とやってしまう訳なのだが,結論からいうとこ

    gdbでSTLのコンテナの値を表示する方法 - pyopyopyo - Linuxとかプログラミングの覚え書き -
    mogwaing
    mogwaing 2007/08/19
    [c**
  • GDB STL Utilities

    There's a wonderful tool by Gilad Mishne for debugging STL code with GDB. Unfortunately, it had some bugs (or perhaps incompatibilities with my versions of GCC/GDB). So I've fixed these bugs and repackaged it in a slightly more user-friendly format. Download gdb_stl_utils.tar.gz, extract it, and run make. This will compile and install the necessary files in ~/.gdb (edit the Makefile if you want to

    mogwaing
    mogwaing 2007/08/19
    stlをgdbでデバッグするためのツール
  • DSAS開発者の部屋:オープンソースを楽しむエンジニアの一日 〜 コードを楽しく読む工夫

    C言語で書かれたソースコードを読んでいるとき、関数ポインタから呼び出されている機能の実体がどこに書かれているのかを探すのに苦しんだ経験はありませんか? 私はあります、いっぱいあります!! そんなときはどうするかというと・・・ 手順1: まずは気分転換をする! 手順2: そして気合いを入れ直す! 手順3: さらに気力で読み砕く! 手順4: 最後に根性で発見する! これが、ごく一般的な作業手順(?)かと思います・・・(ごめんなさい嘘です) でもまあ、実際にここまで出来れば、そのプログラムの大まかな構成とか癖みたいなものはだいたい把握できているはずなので、他の関数ポインタについてもある程度当たりをつけて見つけだすことが出来るようにはなるかと思います。 ・・・・・が、、できれば気合いと根性を使わずに追えるなら追いたいのが人情ですよね。 straceやltraceを使えばシステムコールやライブラリコ

    DSAS開発者の部屋:オープンソースを楽しむエンジニアの一日 〜 コードを楽しく読む工夫
  • 1