【发布时间】:2017-04-11 10:30:08
【问题描述】:
如果你在编译时没有“-g”标志的可执行文件上使用gdb,你还能调试吗?如果是这样,与调试使用“-g”编译的可执行文件相比,您会看到什么不同?
【问题讨论】:
-
是的,你可以。你试过了吗?
如果你在编译时没有“-g”标志的可执行文件上使用gdb,你还能调试吗?如果是这样,与调试使用“-g”编译的可执行文件相比,您会看到什么不同?
【问题讨论】:
在gcc 中添加-g 选项可以添加调试符号和信息。然后,在调试时,显示的信息更易于阅读。
-g
以操作系统的本机格式(stabs、COFF、XCOFF 或 DWARF)生成调试信息。 GDB 可以使用这些调试信息。
在大多数使用 stabs 格式的系统上,-g 允许使用只有 GDB 才能使用的额外调试信息;这些额外的信息使 GDB 中的调试工作更好,但可能使其他调试器崩溃或拒绝读取程序。如果您想确定是否生成额外信息,请使用 -gstabs+、-gstabs、-gxcoff+、-gxcoff 或 -gvms
例如,对于使用-g 编译的二进制文件,在gdb 中运行可以显示函数名称,而没有-g,您将只能看到函数指针(地址)。
【讨论】: