Search Results: tag:gdb

5 件ヒットしました。

C_language debug gdb malloc で確保した配列を一度に表示する

「@」でサイズを指定すればよい。

double *ptr = (double *) malloc(sizeof(double) * 5);

となっているような場合に gdb で

p ptr@5

とすると5個 double が表示される。

C_language debug gdb ブレークポイントに条件をつける

まず、ブレークポイントを設定する。

b func

このブレークポイントに条件を加えるには、condition を使う。 ブレークポイントの番号が 1 だとすると、その番号を指定して

condition 1 val == 3

のようにして指定する。これは変数 val が 3 のときにプログラムが停止する。

C_language debug gdb ブレークポイントを削除する

まず、ブレークポイントの一覧を

info breakpoints

で表示し、ブレークポイントの番号を確認する。 delete で削除したいブレークポイントの番号を指定して削除する。

delete 3

C_language debug gdb バックトレースを表示する

まず、Ubuntu 11.10 だと coredumpsize が 0 になっている。 デバッグのためには

limit coredumpsize 10000

のように指定して core ファイルが作成されるようにする。

そして gdb を使えばバックトレースを表示できる。 コンパイル時にgccに-gオプションをつけた場合はファイル名と行番号も表示される。

gdb a.out core

また、glibc に含まれる backtrace() と backtrace_symbols_fd() を使うと 実行中のCプログラムのバックトレースを表示することができる。 詳細はglibcのマニュアルを参照。

C_language debug gdb libtool で gdb を使う

普通に

gdb ./prog

のようにやってもうまくいかない。

libtool --mode=execute gdb ./prog

のように libtool を使って実行する。