从 Visual Studio 调试独立的 exe
Posted
技术标签:
【中文标题】从 Visual Studio 调试独立的 exe【英文标题】:Debug a standalone exe from Visual Studio 【发布时间】:2017-07-13 06:45:01 【问题描述】:我有一个可以在我的机器上完美运行的可执行文件。它恰好是使用 Visual Studio 2015 社区创建它的机器。
但它无法在其他机器上运行并创建“程序已停止工作”和“您要发送有关该问题的更多信息”消息。
我怎样才能将这个程序的所有调试信息捕获到一个文件中,以便找出程序在哪里中断。在 promgram.cs 文件运行之前它似乎失败了,因为我将 msgbox 作为它永远不会到达的第一行,所以我只能假设它在初始框架加载或类似情况下失败。
【问题讨论】:
【参考方案1】:我相信您需要使用应用程序创建的原始 PDB 文件。这里有一个相关的帖子: How do I use PDB files
【讨论】:
【参考方案2】:有几种方法可以做到这一点:
重要提示:您必须具有有效的调试符号才能查看源文件、具有有意义的调用堆栈帧并命中断点。如果您还没有构建应用程序时生成的 pdb,您可以重新构建新构建的 exe 并将其复制到您的另一台机器上。
使用 Windows 错误报告收集可以在 Visual Studio 中打开的转储
在你的应用崩溃的机器上写一些注册表值,让它崩溃。将转储文件复制到您的开发机器并使用 Visual Studio 打开以进行调试。
使用下面的命令开始 - 您必须将“YourApp.exe”替换为您的 exe 的实际名称。转储的默认目录是 %LOCALAPPDATA%\CrashDumps
reg add "HKLM\Software\Microsoft\Windows\Windows Error Reporting\LocalDumps\YourApp.exe" /v DumpType /t REG_DWORD /d 2
有关完整详细信息,请参阅 Windows documentation。
使用 EXE 项目和远程调试器远程启动程序
在应用崩溃的机器上,安装 Visual Studio 远程工具并启动远程调试器。
在您的开发机器上,启动 Visual Studio,打开项目 (Ctl + Shift + o),然后选择您的应用程序的 exe 文件。 (它需要与崩溃的机器完全匹配,因此您可能需要创建一些目录和一个空文本文件并将扩展名更改为 .exe)
示例:如果您的应用位于 E:\Program Files (x86)\MyCoolApps\bin\MyCoolApp.exe 的完整路径,您必须在完全相同的位置创建一个文件(可以为空)即使同一个应用程序已经位于 C:\Program Files (x86)\MyCoolApps\bin\x86\MyCoolApp.exe
打开项目属性(在解决方案资源管理器中右键单击项目节点)
用适合您环境的值填写相应的字段(以粗体显示)。您应该将调试器类型更改为您的 exe 是什么(C#/VB 托管或 C/C++ 本地)。
现在您已准备好在调试器下启动您的应用。与 Visual Studio 中的任何其他项目一样,按 F5 进行调试。
【讨论】:
以上是关于从 Visual Studio 调试独立的 exe的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Visual Studio 中使用 .NET 5(独立进程)调试 Azure Functions?
Visual Studio 2010 远程调试 - 无法连接:拒绝访问
如何在 Visual Studio 中创建独立的 exe? [复制]