2010-01-24 92 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