2010-01-24 24 views
2

我正在編譯Snow Leopard上的i386 C++應用程序。GDB無法使用-D_FILE_OFFSET_BITS = 64

當我用-D_FILE_OFFSET_BITS = 64進行編譯時,我不能在gdb中使用這個二進制文件。我收到以下錯誤消息:

警告:無法找到目標文件「/var/folders/kw/kwmH332LGwCIh3GrRREgCk+++TI/-Tmp-//ccZfMAM5.o」 - 沒有可用於「測試」的調試信息。 CPP」。

回答

4

這可能與-D_FILE_OFFSET_BITS=64沒有任何關係。

當您在Mac OS上編譯時,調試信息不​​會被拉入可執行文件,而是保留在目標文件中,調試器在那裏尋找它。

從你的警告消息,看來,你做的事:

g++ -D_FILE_OFFSET_BITS=64 -g test.cpp 

這將創建一個臨時目標文件(像ccZfMAM5.o名),該目標文件到可執行文件鏈接,然後刪除目標文件。由於調試器無法讀取不再存在的目標文件的調試信息,因此會收到警告。

相反,這樣做:

g++ -g -c -D_FILE_OFFSET_BITS=64 test.cpp 
g++ -g test.o 

這將使test.o目標文件(和其中包含的調試信息)提供給調試器。

+0

是的,我認爲D_FILE_OFFSET_BITS是一個紅鯡魚。謝謝 – 2010-01-25 01:45:26