c语言 - GDB 仍然显示变量<优化>即使在 gcc(v7 和 v9.3.1)-O0 优化关闭后



固定!只有3个源代码模块,没有make文件。一个用于编译和链接的gcc命令,如图所示。我不认为所有的东西都不可能被编译。

我试图打印的矩阵指针是从一个较大的结构数组中提取到一个自动变量的。当我在gdb中打印完整的结构路径时,它起作用了。

当您显式关闭优化,并且详细编译器输出在COLLECT_GCC_OPTIONS="-O0"中对其进行验证时,这似乎与";使调试产生预期的结果";使变量优化并隐藏。

即使使用了-0g,别名变量仍然是

在Opensuse leap 15.1上使用gcc 9.3.1设置env var CFLAGS="使用-O0关闭所有优化我还尝试过使用gcc 7.5.0我得到了一个segov。当我尝试在gdb中打印变量时,它们显示

看起来你的帖子大部分都是代码;请添加更多详细信息。更多详细信息更多细节这就搞定了!???

user1@nova:~/bin> CFLAGS=""; gcc -v  -O0 -g -m64  -Wuninitialized -fopenmp -I/usr/local/mysql/include -O0 /home/user1/bin/align_ppm.c -lm  -lgd -lpng16 -lz            -o /home/user1/bin/align_ppm_d 
`/home/user1/bin/align_ppm_d' has changed; re-reading symbols.
Starting program: /home/user1/bin/align_ppm_d pf-2020.0805-291582.dt.ppm  pf-2020.0805-291583.dt.ppm  -d -d -s  -d  -f    > ap23c.dt.log
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib64/libthread_db.so.1".
[New Thread 0x7fff58627700 (LWP 5330)]
[New Thread 0x7fff57e26700 (LWP 5331)]
[New Thread 0x7fff57625700 (LWP 5332)]
[New Thread 0x7fff56e24700 (LWP 5333)]
[New Thread 0x7fff56623700 (LWP 5334)]
[New Thread 0x7fff55e22700 (LWP 5335)]
[New Thread 0x7fff55621700 (LWP 5336)]
Thread 1 "align_ppm_d" received signal SIGSEGV, Segmentation fault.
0x00000000004a5631 in graph_hit_mis (mgc=0x718d80 <MGC>, smcss=0x719c10 <smcss>, gfinal=1, maia=0x719b70 <MMIA>, 
tsa=0x71a440 <tsa>, debug=3) at /home/user1/bin/align_ppm.c:1240
1240                                              if((fmat[fy][fintoff]) & bmask) hitidx += 2; } // FIN
(gdb) p fmat
$151 = <optimized out>
(gdb) p  fmat[fy][fintoff]
value has been optimized out
Using built-in specs.
COLLECT_GCC=/usr/bin/gcc-9
COLLECT_LTO_WRAPPER=/usr/lib64/gcc/x86_64-suse-linux/9/lto-wrapper
OFFLOAD_TARGET_NAMES=hsa:nvptx-none
Target: x86_64-suse-linux
Configured with: ../configure --prefix=/usr --infodir=/usr/share/info --mandir=/usr/share/man --libdir=/usr/lib64 --libexecdir=/usr/lib64 --enable-languages=c,c++,fortran,ada,go --enable-offload-targets=hsa,nvptx-none=/usr/nvptx-none, --without-cuda-driver --disable-werror --with-gxx-include-dir=/usr/include/c++/9 --enable-ssp --disable-libssp --disable-libvtv --disable-cet --disable-libcc1 --disable-plugin --with-bugurl=https://bugs.opensuse.org/ --with-pkgversion='SUSE Linux' --with-slibdir=/lib64 --with-system-zlib --enable-libstdcxx-allocator=new --disable-libstdcxx-pch --enable-version-specific-runtime-libs --with-gcc-major-version-only --enable-linker-build-id --enable-linux-futex --enable-gnu-indirect-function --program-suffix=-9 --without-system-libunwind --enable-multilib --with-arch-32=x86-64 --with-tune=generic --build=x86_64-suse-linux --host=x86_64-suse-linux
Thread model: posix
gcc version 9.3.1 20200406 [revision 6db837a5288ee3ca5ec504fbd5a765817e556ac2] (SUSE Linux) 
COLLECT_GCC_OPTIONS='-v' '-O0' '-g' '-m64' '-Wuninitialized' '-fopenmp' '-I' '/usr/local/mysql/include' '-O0' '-o' '/home/user1/bin/align_ppm_d' '-mtune=generic' '-march=x86-64' '-pthread'
/usr/lib64/gcc/x86_64-suse-linux/9/cc1 -quiet -v -I /usr/local/mysql/include -D_REENTRANT /home/user1/bin/align_ppm.c -quiet -dumpbase align_ppm.c -m64 -mtune=generic -march=x86-64 -auxbase align_ppm -g -O0 -O0 -Wuninitialized -version -fopenmp -o /home/user1/tmp/cchRAKiS.s
GNU C17 (SUSE Linux) version 9.3.1 20200406 [revision 6db837a5288ee3ca5ec504fbd5a765817e556ac2] (x86_64-suse-linux)
compiled by GNU C version 9.3.1 20200406 [revision 6db837a5288ee3ca5ec504fbd5a765817e556ac2], GMP version 6.1.2, MPFR version 4.0.1, MPC version 1.1.0, isl version isl-0.18-GMP
GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
#include "..." search starts here:
#include <...> search starts here:
/usr/local/mysql/include
/usr/lib64/gcc/x86_64-suse-linux/9/include
/usr/local/include
/usr/lib64/gcc/x86_64-suse-linux/9/include-fixed
/usr/lib64/gcc/x86_64-suse-linux/9/../../../../x86_64-suse-linux/include
/usr/include
End of search list.
GNU C17 (SUSE Linux) version 9.3.1 20200406 [revision 6db837a5288ee3ca5ec504fbd5a765817e556ac2] (x86_64-suse-linux)
compiled by GNU C version 9.3.1 20200406 [revision 6db837a5288ee3ca5ec504fbd5a765817e556ac2], GMP version 6.1.2, MPFR version 4.0.1, MPC version 1.1.0, isl version isl-0.18-GMP
GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
Compiler executable checksum: 00000000000000000000000000000000
COLLECT_GCC_OPTIONS='-v' '-O0' '-g' '-m64' '-Wuninitialized' '-fopenmp' '-I' '/usr/local/mysql/include' '-O0' '-o' '/home/user1/bin/align_ppm_d' '-mtune=generic' '-march=x86-64' '-pthread'
/usr/lib64/gcc/x86_64-suse-linux/9/../../../../x86_64-suse-linux/bin/as -v -I /usr/local/mysql/include --64 -o /home/user1/tmp/ccCC3GjB.o /home/user1/tmp/cchRAKiS.s
GNU assembler version 2.32.0 (x86_64-suse-linux) using BFD version (GNU Binutils; openSUSE Leap 15.1) 2.32.0.20190909-lp151.3.6
COMPILER_PATH=/usr/lib64/gcc/x86_64-suse-linux/9/:/usr/lib64/gcc/x86_64-suse-linux/9/:/usr/lib64/gcc/x86_64-suse-linux/:/usr/lib64/gcc/x86_64-suse-linux/9/:/usr/lib64/gcc/x86_64-suse-linux/:/usr/lib64/gcc/x86_64-suse-linux/9/../../../../x86_64-suse-linux/bin/
LIBRARY_PATH=/usr/lib64/gcc/x86_64-suse-linux/9/:/usr/lib64/gcc/x86_64-suse-linux/9/../../../../lib64/:/lib/../lib64/:/usr/lib/../lib64/:/usr/lib64/gcc/x86_64-suse-linux/9/../../../../x86_64-suse-linux/lib/:/usr/lib64/gcc/x86_64-suse-linux/9/../../../:/lib/:/usr/lib/
Reading specs from /usr/lib64/gcc/x86_64-suse-linux/9/libgomp.spec
COLLECT_GCC_OPTIONS='-v' '-O0' '-g' '-m64' '-Wuninitialized' '-fopenmp' '-I' '/usr/local/mysql/include' '-O0' '-o' '/home/user1/bin/align_ppm_d' '-mtune=generic' '-march=x86-64' '-pthread'
/usr/lib64/gcc/x86_64-suse-linux/9/collect2 -plugin /usr/lib64/gcc/x86_64-suse-linux/9/liblto_plugin.so -plugin-opt=/usr/lib64/gcc/x86_64-suse-linux/9/lto-wrapper -plugin-opt=-fresolution=/home/user1/tmp/cc1z5Qzl.res -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lpthread -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s --build-id --eh-frame-hdr -m elf_x86_64 -dynamic-linker /lib64/ld-linux-x86-64.so.2 -o /home/user1/bin/align_ppm_d /usr/lib64/gcc/x86_64-suse-linux/9/../../../../lib64/crt1.o /usr/lib64/gcc/x86_64-suse-linux/9/../../../../lib64/crti.o /usr/lib64/gcc/x86_64-suse-linux/9/crtbegin.o /usr/lib64/gcc/x86_64-suse-linux/9/crtoffloadbegin.o -L/usr/lib64/gcc/x86_64-suse-linux/9 -L/usr/lib64/gcc/x86_64-suse-linux/9/../../../../lib64 -L/lib/../lib64 -L/usr/lib/../lib64 -L/usr/lib64/gcc/x86_64-suse-linux/9/../../../../x86_64-suse-linux/lib -L/usr/lib64/gcc/x86_64-suse-linux/9/../../.. /home/user1/tmp/ccCC3GjB.o -lm -lgd -lpng16 -lz -lgomp -lgcc --push-state --as-needed -lgcc_s --pop-state -lpthread -lc -lgcc --push-state --as-needed -lgcc_s --pop-state /usr/lib64/gcc/x86_64-suse-linux/9/crtend.o /usr/lib64/gcc/x86_64-suse-linux/9/../../../../lib64/crtn.o /usr/lib64/gcc/x86_64-suse-linux/9/crtoffloadend.o
COLLECT_GCC_OPTIONS='-v' '-O0' '-g' '-m64' '-Wuninitialized' '-fopenmp' '-I' '/usr/local/mysql/include' '-O0' '-o' '/home/user1/bin/align_ppm_d' '-mtune=generic' '-march=x86-64' '-pthread'

gcc出现以优化别名变量当我尝试打印别名版本时,gdb只会打印打印结构数组中嵌套较深的原始变量,它按预期打印。在这里发布的一个类似的问题中,用-O0编译解决了这个问题。这对我的代码不起作用。

最新更新