没有 pdb 文件如何进行调试?
How is debugging possible without pdb files?
情况:
- 项目 DEP 是一个 .NET class 库项目,正在使用 VS2015 开发,目标是 .NET 4.5
- 项目 A 引用 DEP.dll(dll,而不是源代码项目本身)
- 项目 A 和 DEP 是单独解决方案的一部分
当我在调试模式下构建 DEP,然后调试项目 A 时,即使我在 DEP 的输出文件夹中看不到任何 pdb 文件,我仍然可以从 DEP 进入代码。我想知道如何调试 DEP。我认为总是需要 pdb 才能进行调试。或者在调试模式下构建的 dll 是否包含足够的调试信息?
每个程序都是可调试的。调试器最基本的能力是单步执行处理器指令、查看处理器寄存器和检查内存。机器之魂。如果没有 PDB,您将永远无法获得查看源代码、单步语句和检查命名变量的能力。实际上在没有 PDB 的情况下修复错误是非常不切实际的。
如果您确实看到了源代码,那就不足为奇了,调试器非常擅长定位 PDB。如果您没有自己复制它,那么调试器可以在项目的 obj\Debug
目录中找到它的原始位置,即编译器放置它的位置。该 PDB 的路径嵌入在可执行文件中。您可以找出它是如何找到它的,使用调试 > Windows > 模块,右键单击 DLL 和 select 符号加载信息。它会向您展示调试器在何处查找 PDB。
情况:
- 项目 DEP 是一个 .NET class 库项目,正在使用 VS2015 开发,目标是 .NET 4.5
- 项目 A 引用 DEP.dll(dll,而不是源代码项目本身)
- 项目 A 和 DEP 是单独解决方案的一部分
当我在调试模式下构建 DEP,然后调试项目 A 时,即使我在 DEP 的输出文件夹中看不到任何 pdb 文件,我仍然可以从 DEP 进入代码。我想知道如何调试 DEP。我认为总是需要 pdb 才能进行调试。或者在调试模式下构建的 dll 是否包含足够的调试信息?
每个程序都是可调试的。调试器最基本的能力是单步执行处理器指令、查看处理器寄存器和检查内存。机器之魂。如果没有 PDB,您将永远无法获得查看源代码、单步语句和检查命名变量的能力。实际上在没有 PDB 的情况下修复错误是非常不切实际的。
如果您确实看到了源代码,那就不足为奇了,调试器非常擅长定位 PDB。如果您没有自己复制它,那么调试器可以在项目的 obj\Debug
目录中找到它的原始位置,即编译器放置它的位置。该 PDB 的路径嵌入在可执行文件中。您可以找出它是如何找到它的,使用调试 > Windows > 模块,右键单击 DLL 和 select 符号加载信息。它会向您展示调试器在何处查找 PDB。