关于GDB和CRC不匹配

lxg*_*eek 3 c++ gcc gdb

我想用来gdb调试代码.当我写命令时:

gdb gdns_processor 
Run Code Online (Sandbox Code Playgroud)

它将从gdb以下位置输出警告消息:

<http://www.gnu.org/software/gdb/bugs/>...
Reading symbols from /usr/local/gdnscenter/bin/gdns_processor...
warning: the debug information found in "/usr/lib/debug//usr/local/gdnscenter/bin/gdns_processor.debug" does not match "/usr/local/gdnscenter/bin/gdns_processor" (CRC mismatch).
warning: the debug information found in "/usr/lib/debug/usr/local/gdnscenter/bin/gdns_processor.debug" does not match "/usr/local/gdnscenter/bin/gdns_processor" (CRC mismatch).

(no debugging symbols found)...done.
Run Code Online (Sandbox Code Playgroud)

我不明白CRC不匹配.为什么gdb找不到符号?

PS:我的gcc选择设置了-g标志.

CPPFLAGS="-D_LIBC_REENTRANT $CPPFLAGS -g"
Run Code Online (Sandbox Code Playgroud)

Emp*_*ian 5

我不明白CRC不匹配

要理解该消息,您需要阅读GDB使用"单独的调试文件",例如此处.

我的Gcc选项设置了-g. CPPFLAGS="-D_LIBC_REENTRANT $CPPFLAGS -g"

你可能没有告诉我们整个故事.您的构建过程可能会生成gdns_processor二进制文件,并gdns_processor.debug为其生成"单独的调试文件".

然后你复制gdns_processor/usr/local/gdnsceter/bin/,但(显然)忽略了复制gdns_processor.debug/usr/lib/debug/usr/local/gdnscenter/bin/.

  • 我试试这个:(gdb)symbol-file /usr/lib/debug/usr/local/gdnscenter/bin/gdns_processor.debug从/usr/lib/debug/usr/local/gdnscenter/bin/gdns_processor.debug读取符号. ..done. (2认同)