【发布时间】:2019-01-23 14:07:54
【问题描述】:
我大致知道,当从 .exe 静态链接到 .lib 时,代码被放置在 .exe 中(当然缺少一些细节)。
但是当从 WinDbg 之类的东西获取堆栈跟踪时,我是否需要为 exe 和 lib 提供一个 pdb,或者 exe 的 pdb 是否包含来自 pdb 的 lib 信息(以相同的方式exe包含lib)?
我问是因为在使用 MSVC 调试构建(使用 CMake)中,我为我的 .libs、.ddls、.exes 获取 pdb,但在发布时我只能为 .dlls 和 .exes 获取 pdb
【问题讨论】:
-
如果 lib 文件是静态链接的,那么您可能需要 PDB 文件。如果它们只是用于链接器和 DLL,那么它们就毫无意义并且永远不会生成,这些 LIB 只是
ar存档,存储所有导出的函数名称。 -
EXE 就足够了,静态库的 pdb 条目被合并到其中。只要您不使用 /DEBUG:FASTLINK 链接器选项。
标签: windows visual-studio