我正在Snow Leopard上编译一个i386 C ++应用程序。
当我使用-D_FILE_OFFSET_BITS = 64进行编译时,我不能将二进制文件与gdb一起使用。我收到以下错误消息:
警告:找不到对象文件“/var/folders/kw/kwmH332LGwCIh3GrRREgCk+++TI/-Tmp-//ccZfMAM5.o” - 没有可用于“test.cpp”的调试信息。
答案 0 :(得分: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
目标文件(及其中包含的调试信息)可供调试器使用。