2012-10-17 44 views
3

我想用gdb來調試代碼。當我寫的命令:關於GDB和CRC不匹配

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" 

回答

5

我不明白CRC不匹配

要了解信息,你需要了解GDBS使用的「獨立調試文件」,例如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/

+0

謝謝。 gdns_processor二進制文件位於/ usr/local/gdnsceter/bin /中。而gdns_processor.debug位於/ usr/lib/debug/usr/local/gdnscenter/bin /中。我將在單獨文件中讀取此調試信息 – lxgeek

+1

「此外,調試鏈接指定調試文件的32位循環冗餘校驗(CRC)校驗和,該校驗文件用於驗證可執行文件和調試文件是否來自相同建立「。但我的系統是x86_64。所以CRC校驗和是錯誤的? – lxgeek

+2

我試試這個:(gdb)symbol-file /usr/lib/debug/usr/local/gdnscenter/bin/gdns_processor.debug 讀取/ usr/lib/debug/usr/local/gdnscenter/bin/gdns_processor中的符號。調試...做。 – lxgeek

-1

也許你調試的程序不匹配源代碼,考慮重新編譯程序。 PS:如果你想了解更多關於調試信息的細節,你可以使用-ggdb選項。

+0

謝謝,我試了一下。 – lxgeek