【问题标题】:When running debugger from .exe, how do I view the source code?从 .exe 运行调试器时,如何查看源代码?
【发布时间】:2023-04-01 22:12:01
【问题描述】:

我正在尝试查看已安装应用程序的源代码,以便调试它。我的调试器是 Visual Studio,使用 .Net 4.5。要打开该文件,我在 Visual Studio 中选择了“从源代码打开”,然后选择了 applicationName.exe 文件。 VS 似乎已打开该文件,我现在可以从 Visual Studio 运行该文件。

但是,我无法查看源代码、添加中断或单步执行应用程序。当我使用 IntelliTrace 的“Break all”选项时,应用程序似乎已暂停,但随后我只是被告知“代码未运行:当前线程当前未运行代码或无法获取调用堆栈”。然后当我点击“继续”时,应用程序会从中断的地方继续。

如何解决这个问题,以便实际查看源代码并插入断点?

【问题讨论】:

    标签: visual-studio debugging .net-4.5


    【解决方案1】:

    如何解决这个问题,以便实际查看源代码并插入断点?

    您需要为您正在调试的 exe 提供相应的 .pdb 文件。 .pdb 文件用于“将您在源文件中为类、方法和其他代码创建的标识符映射到项目的已编译可执行文件中使用的标识符。 .pdb 文件还将源代码中的语句映射到可执行文件中的执行指令。”调试器需要此类文件来定位源文件中的代码行。

    详细解释,请参考: https://msdn.microsoft.com/en-us/library/ms241613.aspx

    上面的链接还介绍了调试时如何加载.pdb文件和源文件。

    【讨论】:

    • 此答案提供了丰富的信息,但我无法找到 .pdb 文件。我已经查看了 .pdb 的程序文件,但没有看到它。给出的链接说系统将查看“在 DLL 或可执行文件中指定的位置”,但我不知道如何查看 .exe 的代码或查看哪个 .dll。因为我不知道不知道系统正在查找的位置,并且由于它似乎与 .exe 不在同一文件夹中,因此 .pdb 是否还有其他可能的位置?
    • @MrSpudtastic,.pdb 文件应由您要调试的已安装程序提供。所以请检查程序安装路径,确认是否提供了.pdb文件。也可以联系程序作者提供.pdb文件让你调试。
    【解决方案2】:

    一般来说,Leo-MSFT 所写的是正确的,对于 .NET 应用程序,它在源代码和 PDB 方面更容易一些,因为它们可以从 .NET 程序集生成。它不会是确切的源代码,但接近的东西是可以理解的。

    您可以使用dnSpy 之类的工具打开此类程序集并在其中调试并显示源代码。

    如果您需要坚持使用 Visual Studio,我建议使用 JetBrains dotPeek。它可以充当符号服务器(因此在需要时提供 PDB)。

    您将其添加到 VS(符号服务器选项)中,然后当 VS 请求 PDB 时,它可以为您即时生成一个并且您可以进行调试。

    【讨论】:

      猜你喜欢
      • 2018-11-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-26
      • 1970-01-01
      • 2011-08-23
      相关资源
      最近更新 更多