使用 linux 和 g++ 生成 pdb 文件
Posted
技术标签:
【中文标题】使用 linux 和 g++ 生成 pdb 文件【英文标题】:Generate pdb files with linux and g++ 【发布时间】:2014-10-26 00:12:15 【问题描述】:这是我的生成文件。我还想生成 .pdb 文件。我已经在使用 -g 选项,但是我没有看到任何使用 .pdb 扩展名创建的文件。帖子here 也声明使用-g 选项。
CXX = g++
CXXFLAGS = -Wall -g
all: comment \
test
comment:
@echo ------Starting Build Process-----------------
test: main.o car.o student.o house.o
$(CXX) $(CXXFLAGS) -o test main.o car.o student.o house.o
main.o: student.h house.h main.cpp
$(CXX) $(CXXFLAGS) -c main.cpp
car.o: car.h
student.o: student.h car.h
house.o: house.h
clean:
rm -rf *.o test
关于如何生成 pdb 文件有什么建议吗?
【问题讨论】:
见***.com/questions/866721/…和sourceware.org/gdb/onlinedocs/gdb/Separate-Debug-Files.html 我正在使用objcopy --only-keep-debug test test.debug
如果我使用 .pdb 而不是调试,我会得到一个有效的 pdb 吗?
只要使用 'valid' 并不意味着 Microsoft 的专有文件格式
【参考方案1】:
我也想生成 .pdb 文件
您不能:PDB file format 是 Microsoft 专有且未记录在案的,因此不能由非 Microsoft 工具生成。
PDB 文件也不能在 Linux 上使用。换句话说,您生成 PDB 的愿望很可能是由于您缺乏了解。
【讨论】:
【参考方案2】:请查看 Alexey Alexandrov 在How do I generate symbol information to use with Linux version of Intel's VTune Amplifier? 的回复:
对于任何从事生产软件的开发人员来说,另一个有用的考虑因素是使用separate debug information files!。假设如上所述使用“-g”编译程序,然后使用 objcopy 实用程序将包含调试信息的 ELF 部分复制到单独的文件中,并将原始二进制文件的链接添加到单独的调试信息文件中。这对于能够存储您发布给客户的位的调试信息非常有用,以便可以进行事后调试。当然,对于发布位的性能分析也是如此。
这是我所知道的 Microsoft 的 PDB 文件和 Linux 之间最接近的映射。
【讨论】:
以上是关于使用 linux 和 g++ 生成 pdb 文件的主要内容,如果未能解决你的问题,请参考以下文章