GNU gdb Fedora(6.8-37.el5)Kernal 2.6.18-164.el5
我正在尝试调试我的应用程序.但是,每当我将二进制文件传递给gdb时,它会说:
(no debugging symbols found)
Run Code Online (Sandbox Code Playgroud)
这是二进制文件的输出,你可以看到它没有被剥离:
vid: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.6.9, dynamically linked (uses shared libs), for GNU/Linux 2.6.9, not stripped
Run Code Online (Sandbox Code Playgroud)
我正在编译以下CFLAGS:
CFLAGS = -Wall -Wextra -ggdb -O0 -Wunreachable-code
Run Code Online (Sandbox Code Playgroud)
任何人都可以告诉我,如果我错过了一些简单的吗?
Emp*_*ian 45
存在"找不到调试符号"的最常见原因是链接线上某处-g存在"杂散" -s或-S参数.
来自man ld:
-s
--strip-all
Omit all symbol information from the output file.
-S
--strip-debug
Omit debugger symbol information (but not all symbols) from the output file.
Run Code Online (Sandbox Code Playgroud)
Max*_*kin 29
应用程序必须编译并与-g选项链接.即你需要-g同时加入CPPFLAGS和LDFLAGS.
gee*_*aur 16
某些Linux发行版不使用gdb样式调试符号.(他们更喜欢IIRC dwarf2.)
通常,gcc并且gdb将同步它们使用什么样的调试符号,并且强制特定样式将仅引起问题; 除非你知道你需要别的东西,否则就用吧-g.
| 归档时间: |
|
| 查看次数: |
83441 次 |
| 最近记录: |