当前位置:  开发笔记 > 编程语言 > 正文

gcc -ggdb和gcc -g有什么区别

如何解决《gcc-ggdb和gcc-g有什么区别》经验,为你挑选了4个好方法。

当我使用gcc编译C程序时,我通常会使用-g一些调试信息到elf文件中,以便gdb可以在需要时帮助我.

但是,我注意到有些程序使用-ggdb,因为它应该使调试信息更友好.

它们有何不同,建议使用哪些?


注意:指向调试程序或GCC的选项的链接,http://gcc.gnu.org/onlinedocs/gcc/Debugging-Options.html#Debugging-Options



1> mrz..:

-g并且-ggdb几乎相似但略有不同,我在这里读到:

-g以OS¹本机格式(stabs,COFF,XCOFF或DWARF 2)生成调试信息.

-ggdb生成专门用于gdb的调试信息.

-ggdb3生成额外的调试信息,例如:包括宏定义.-ggdb本身没有指定级别默认值

-ggdb2(即2级的gdb).



2> luapyad..:

可能没有区别 - 取决于操作系统本机格式以及您希望调试信息的可移植性.请参阅GCC手册" 调试选项".



3> 小智..:

我至少有一个例子,其中-ggdb对我来说比我们使用的另一个调试选项更好:

amitkar@lohgad:~> cat > main.c
#include 

int main(int argc, char **argv)
{
        printf("Args :%d\n", argc);
        for ( ;argc > 0;)
                printf("%s\n", argv[--argc]);

        return 0;
}
amitkar@lohgad:~> gcc -gstabs+ main.c -o main

amitkar@lohgad:~> file main
main: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), for GNU/Linux 2.6.4, dynamically linked (uses shared libs), not stripped
amitkar@lohgad:~> /usr/bin/gdb ./main
GNU gdb 6.6.50.20070726-cvs
Copyright (C) 2007 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for details.
This GDB was configured as "x86_64-suse-linux"...
Using host libthread_db library "/lib64/libthread_db.so.1".
(gdb) break main
Breakpoint 1 at 0x400577: file main.c, line 5.
(gdb) run
Starting program: /home/amitkar/main

Breakpoint 1, main (argc=Cannot access memory at address 0x8000df37d57c
) at main.c:5
5               printf("Args :%d\n", argc);
(gdb) print argc
Cannot access memory at address 0x8000df37d57c
(gdb)

注意:这仅在x86-64框上发生,并在使用-ggdb编译时消失.但是,即使使用-gstabs +,新版本的调试器也能正常工作



4> DevSolar..:

有一点是"-g"是可移植的(例如,Makefiles注定要在非GNU平台上执行).我最近在AIX机器上遇到了关于-g与-ggdb的可移植性问题,这就是我提出它的原因.

但是不知道-ggdb在可用性方面增加了什么.

推荐阅读
黄晓敏3023
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有