我想在Visual Studio中调试应用程序,但我只有1类的源代码。我只需要在该文件中单步执行一个函数,但我不明白我需要做什么。我认为步骤通常是这样的:

  1. 在VS
  2. 中打开文件
  3. 加载“符号” (.PDB文件)
  4. 附加到正在运行的进程
  5. 我知道如何做#1和#3,但如果没有.PDB文件,我不知道如何做#2。是否可以为此生成.PDB文件以使其工作?谢谢!

有帮助吗?

解决方案

您需要* .pdb文件(帖子中的第2步)这些文件包含源代码和已编译程序集之间的映射。所以你的步骤是正确的。如果源文件与原始文件存在差异,请设置复选标记“允许源代码与原始版本不同”;在BP的属性对话框中。

Visual Studio中的断点和跟踪点

如果您没有PDB文件,可以尝试使用 Reflector.FileDisassembler对您的项目进行反编译 FileGenerator for Reflector 。他们可以重新编译这些文件以获取PDB

另请参阅 Deblector - 为Reflector调试插件。

其他提示

您需要属于您尝试调试的应用程序的符号文件(.PDB)文件。

MSDN:PDB文件

  

Visual Studio调试器使用EXE或DLL文件中PDB的路径来查找project.pdb文件。如果调试器无法在该位置找到PDB文件,或者路径无效,例如,如果项目已移至另一台计算机,则调试器将搜索包含EXE的路径,然后搜索“选项”对话框中指定的符号路径。此路径通常是Symbols节点中的Debugging文件夹。调试器不会加载与正在调试的二进制文件不匹配的PDB。

符号文件是.pdb文件。如果将其放在exectuable旁边,那将加载符号,并指向源文件。

在您的情况下,“符号”表示要调试的程序集的pdb文件。调试器不要求您具有所有源,只需要具有匹配的pdb。 pdb是在程序集的构建过程中生成的,不幸的是,不能在事后创建一个pdb。如果您没有pdb,则需要在较低级别调试源代码。

如果您在计算机上构建了程序集,则在附加时将找到符号。在这种情况下,只需在源代码上设置断点并执行使代码运行所需的任何操作,然后您将点击断点。

如果你没有构建它,你需要找到程序集的pdb。在Debug / Windows / Modules下找到的模块窗口通常可以通过告诉您在过程中加载的程序集以及版本信息和时间戳来提供帮助。

在可能存在多个版本的程序集的情况下(例如,保留许多夜间版本,或者来自持续集成版本的最后20个版本),您将需要该信息。

希望有所帮助。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top