Visual studio 为什么windbg无法从我的pdb文件中读取符号?
我的pdb文件Visual studio 为什么windbg无法从我的pdb文件中读取符号?,visual-studio,security,debugging,windbg,ollydbg,Visual Studio,Security,Debugging,Windbg,Ollydbg,我的pdb文件MFCLibrary1.pdb是由virtual studio 2017生成的,我将其放置在其原始目录G:\MFCLibrary1\Debug\,我设置了符号路径,windbg可以正常加载它,但是,我无法使用x MFCLibrary1读取任何符号信息*命令,如下图所示: link.exe对于大型项目来说,历史上一直非常缓慢,而事实证明,这种缓慢大部分来自生成PDB文件 Visual Studio 2017现在默认使用新的开关,该开关生成最小的PDB文件,并将其余调试信息保留在.
MFCLibrary1.pdb
是由virtual studio 2017生成的,我将其放置在其原始目录G:\MFCLibrary1\Debug\
,我设置了符号路径,windbg可以正常加载它,但是,我无法使用x MFCLibrary1读取任何符号信息*代码>命令,如下图所示:
link.exe
对于大型项目来说,历史上一直非常缓慢,而事实证明,这种缓慢大部分来自生成PDB文件
Visual Studio 2017现在默认使用新的开关,该开关生成最小的PDB文件,并将其余调试信息保留在.obj
文件中
这一选择的明显好处是成本低,但也有一些缺点
缺点#1-调试生成的PDB文件不再包含符号调试所需的所有信息
如果您计划在与构建项目的机器不同的机器上调试项目,则仍然需要生成完整的符号文件
这可以通过以下两种方式之一实现:
通过运行Build->Build FULL program database file for solution,可以从VisualStudio的菜单将现有的FASTLINK PDB转换为完整的PDB
通过在项目的链接器->调试属性页上将“生成调试信息”开关设置为/Debug:FULL
,可以永久更改它
缺点#2-旧的工具,尤其是那些使用dbghelp.dll
的工具,如WinDbg,不理解新的FASTLINK符号文件格式
一些版本拒绝加载FASTLINK符号,另一些版本崩溃或挂起。这是对最新版本的最佳更新
在我的机器上,FASTLINK符号与WinDbg版本10.0.15063.137配合使用效果良好,因此将调试工具更新到该版本或更高版本应该可以
如果由于任何原因无法移动到调试工具的新版本,则按照上述方式生成完整的PDB是次优选项。不幸的是,这样做,您将看不到Visual Studio 2017带来的链接时间的改进。link.exe历来对于大型项目来说非常缓慢,而事实证明,大部分这种缓慢都来自生成PDB文件
Visual Studio 2017现在默认使用新的开关,该开关生成最小的PDB文件,并将其余调试信息保留在.obj
文件中
这一选择的明显好处是成本低,但也有一些缺点
缺点#1-调试生成的PDB文件不再包含符号调试所需的所有信息
如果您计划在与构建项目的机器不同的机器上调试项目,则仍然需要生成完整的符号文件
这可以通过以下两种方式之一实现:
通过运行Build->Build FULL program database file for solution,可以从VisualStudio的菜单将现有的FASTLINK PDB转换为完整的PDB
通过在项目的链接器->调试属性页上将“生成调试信息”开关设置为/Debug:FULL
,可以永久更改它
缺点#2-旧的工具,尤其是那些使用dbghelp.dll
的工具,如WinDbg,不理解新的FASTLINK符号文件格式
一些版本拒绝加载FASTLINK符号,另一些版本崩溃或挂起。这是对最新版本的最佳更新
在我的机器上,FASTLINK符号与WinDbg版本10.0.15063.137配合使用效果良好,因此将调试工具更新到该版本或更高版本应该可以
如果由于任何原因无法移动到调试工具的新版本,则按照上述方式生成完整的PDB是次优选项。不幸的是,这样做,您将看不到Visual Studio 2017带来的链接时间的改进。源路径中的源代码,但它也无法切换到源代码模式调试!为什么?我使用symchk
检查PDB文件和MFCLibrary1.dll,它成功了,但是在windbg中无法正常工作!为什么?我猜是/DEBUG:FASTLINK
(VS2017的新默认值,仅指定/DEBUG
)正在生成您的dbghelp.dll版本无法理解的符号。类似的问题也出现了。如果升级到最新的Windbg没有帮助,请查看指定/DEBUG:FULL
是否有帮助,但会牺牲更长的链接时间。谢谢你,Sean Cline。你的回答是解决我问题的完美办法。你帮了我很多,再次衷心感谢你。@SeanCline,既然你的评论解决了这个问题,你能把你的评论转换成答案吗?这对阅读此线程的其他社区成员是有益的,我们可以关闭此线程。源路径中包含源代码,但它也无法切换到源代码模式调试!为什么?我使用symchk
检查PDB文件和MFCLibrary1.dll,它成功了,但是在windbg中无法正常工作!为什么?我猜是/DEBUG:FASTLINK
(VS2017的新默认值,仅指定/DEBUG
)正在生成您的dbghelp.dll版本无法理解的符号。类似的问题也出现了。如果升级到最新的Windbg没有帮助,请查看指定/DEBUG:FULL
是否有帮助,但会牺牲更长的链接时间。谢谢你,Sean Cline。你的回答是解决我问题的完美办法。你帮了我很多,再次衷心感谢你。@SeanCline,既然你的评论解决了这个问题,你能把你的评论转换成答案吗?这对阅读此线程的其他社区成员是有益的,我们可以关闭此线程。