我们可以仅使用一个文件的源代码调试.NET应用程序吗?
我想在Visual Studio中调试应用程序,但我只有1类的源代码。我只需要单步执行该文件中的单个功能,但是我不知道该怎么做。我认为这些步骤通常是这样的:
- 在VS中打开文件
- 加载"符号"(.PDB文件)
- 添加到正在运行的进程
我知道如何做#1和#3,但是如果没有.PDB文件,我不知道如何做#2. 是否可以为此生成.PDB文件?谢谢!
解决方案
我们需要属于要调试的应用程序的符号文件(.PDB)文件。
MSDN:PDB文件
The Visual Studio debugger uses the path to the PDB in the EXE or DLL file to find the project.pdb file. If the debugger cannot find the PDB file at that location, or if the path is invalid, for example, if the project was moved to another computer, the debugger searches the path containing the EXE followed by the symbol paths specified in the Options dialog box. This path is generally the Debugging folder in the Symbols node. The debugger will not load a PDB that does not match the binary being debugged.
我们需要* .pdb文件(发布中的第2步),这些文件包含源代码和已编译程序集之间的映射。所以步骤是正确的。如果源文件与原始文件有差异,请在BP的属性对话框中设置复选标记"允许源代码与原始版本不同"。
Visual Studio中的断点和跟踪点
如果没有PDB文件,则可以尝试使用Reflector.FileDisassembler或者FileGenerator for Reflector来反编译项目。他们可以重新编译这些文件以获得PDB
还可以看看Reflector的Deblector调试插件。
该符号文件是.pdb文件。如果将其放置在exectuable旁边,则将加载符号,并指向源文件。
在情况下," Symbols"表示要调试的程序集的pdb文件。调试器不需要具有所有源代码,而仅具有匹配的pdb。 pdb是在程序集的生成过程中生成的,但是不幸的是,我们不能在事后创建一个pdb。如果我们没有pdb,则需要在较低级别进行调试,然后在源代码进行调试。
如果在计算机上构建了装配件,则在连接时将找到符号。在这种情况下,只需在源代码上设置一个断点,然后执行使该代码运行的所有必要操作,我们就会遇到该断点。
如果我们没有构建它,则需要找到该程序集的pdb。通过告诉我们在进程中加载的程序集以及版本信息和时间戳,通常可以在Debug / Windows / Modules下找到modules窗口。
在程序集可能有多个版本的情况下,我们将需要该信息(例如,保留多个夜间版本,或者持续集成版本中的最近20个左右版本)。
希望能有所帮助。