关于GDB和CRC不匹配

时间:2012-10-17 03:50:20

标签: c++ gcc gdb

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

gdb gdns_processor 

它将从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.

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

PS:我的gcc选项设置了-g标记。

CPPFLAGS="-D_LIBC_REENTRANT $CPPFLAGS -g"

2 个答案:

答案 0 :(得分:5)

  

我不理解CRC不匹配

要理解该消息,您需要阅读有关GDB使用“单独调试文件”的信息,例如: here

  

我的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/

答案 1 :(得分:-1)

考虑到重新编译程序,您调试的程序可能与源代码不匹配。 PS:如果您想了解调试信息的更多细节,可以使用-ggdb选项。