How do I merge multiple PDB files?

前端 未结 4 1108
太阳男子
太阳男子 2020-12-15 10:48

We are currently using a single command line tool to build our product on both Windows and Linux.

Si far its works nicely, allowing us to build out of source and wit

4条回答
  •  离开以前
    2020-12-15 11:20

    Merge PDB files are possible but only can be done by cl.exe and link.exe. I do NOT know any standlone tools to merge PDB files.

    You can use /PDB option to linker(I checked VC2005) to specify alternate pdb file name.

    Microsoft suggests to also include PDB files(each obj has a corresponding PDB file) along with .LIB file.

    You cannot archive PDB files inside .LIB file, I've tried it with VC2003, failed.

    Compile with /Z7 can avoid PDB files for .LIB, but object files are large, unless the link.exe strip the debug information. If you have no /debug option to linker, then your exe/dll cannot be debugged.

    Compiler(cl.exe) always write to vcXX.pdb file unless you use /Fd option to specify another name. Even when you use cl.exe to produce an executable "directly", It'll produce a vc80.pdb file and then the link.exe will produce the pdb file name same as the executable.

    cl /Zi test.c

    cl.exe -> vc80.pdb link.exe read vc80.pdb(the name is embedded in test.obj file) -> test.pdb

    Each time cl /Zi /c compile a file, it'll try to modify the existing vcXX.pdb file instead of overwrite it.

    I got the above conslusion by play with the compiler again and again, then capture sysinternals's procexp result and analyze it. Hope it helps.

提交回复
热议问题