マクロ展開後のコードを出力するには? [C/C++]
C/C++ のデバッグ関係のメモ。
マクロ展開後のコードを出力するには?
gcc -E hoge.c
assertを無効にするには?
#define NDEBUG
#include <assert.h>
とする。
ちなみに、
(static_cast<void> (0)) ;
に置換された。
segmentation fault したときに core を生成させるには?
プログラムが異常終了した場合、 Segmantation falt する。しかし、 core dumped しない環境がある。これは、core の出力が制限されている可能性がある。
ulimit -c unlimited
とすると、core が全て出力される。大きくなりすぎるで、適当に容量制限を付けても良い。 0 になっていると core が出力されない。
gdb
gcc で -g,-ggdb オプションを CFLAGS につけてコンパイルする。
参考文献
- http://www.coins.tsukuba.ac.jp/~yas/coins/syspro1-1998/1998-04-21/
- http://www.asahi-net.or.jp/~wg5k-ickw/html/online/gdb-4.18/gdb_toc.html
- http://flex.ee.uec.ac.jp/texi/gdb-j/gdb-j_toc.html
- http://www.atmarkit.co.jp/flinux/rensai/linuxtips/023core.html
コメント 0