この C ファイル (sample.c) があります。
#include <stdio.h>
#define M 42
#define ADD(x) (M + x)
int main ()
{
printf("%d\n", M);
printf("%d\n", ADD(2));
return 0;
}
私がコンパイルするもの:
$ gcc -O0 -Wall -g3 sample.c -o sample
次にデバッグします
$ gdb ./sample
GNU gdb (Gentoo 7.3.1 p2) 7.3.1
Copyright (C) 2011 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-pc-linux-gnu".
For bug reporting instructions, please see:
<http://bugs.gentoo.org/>...
Reading symbols from /tmp/sample...done.
(gdb) macro list
(gdb) macro expand ADD(2)
expands to: ADD(2)
(gdb) print M
No symbol "M" in current context.
(gdb) q
これは以前は機能していました。ハードウェア周辺機器とメモリアドレスの名前を定義するライブラリを使用しているため、これが機能する必要があります。
これは、 Sourceware gdb サイトで示されている動作とはまったく矛盾しているようです。
私は何を間違っていますか?