在Visual Studio中调试可执行文件

31

想要在调试器下调试一个可执行文件。如何在Visual Studio中实现。

Windbg有打开可执行文件的选项。但我发现这在VS 2010中缺失了。

问题并不完全相同于Debug exe in visual studio 2010,因为我并不是真正对图像文件执行感兴趣,以便调试启动。

相反,只是想在调试器下调试exe,在它被中断时设置一些断点,并理解执行流程。

尽管图像文件执行是这个问题的一种解决方法。

我不确定这个问题是否幼稚;但这是一个非常直接的使用情况场景,在MS VS 2010中我发现缺失了。


我一直在寻找相同问题的答案。问题在于,WinDbg有一种打开可执行文件的方式,可以自动附加到可执行文件自动生成的所有子进程,而在Visual Studio中,必须手动附加到每个生成的子进程。 - ssn
3个回答

42

你在问题中没有指定它,但我假设你没有源代码。只需使用文件/打开项目/解决方案,选择EXE文件并打开它。然后选择调试/开始调试。另一个选项是先运行EXE,然后选择调试/附加到进程。


如果您有一个命令行应用程序需要调试,而且它在启动后立即完成而没有任何用户交互,那么您可能想使用Debug / Step Into而不是Debug / Start。顺便说一下,如果您打开“解决方案资源管理器”,您应该会在解决方案下看到您的EXE文件。通过右键单击它,您将获得一个带有两个选项的调试菜单:“启动新实例”和“Step Into新实例”。您也可以使用这些选项开始调试。 - pholpar
它给了我 System.ExecutionEngineException - mrid
当我在远程机器上选择一个exe时,它会在远程执行还是本地执行? - LWS
如果您选择位于文件共享上的exe(例如:\server\share\myfile.exe),它将在本地执行。 - matra

3
如果您想知道如何将VS附加到要运行的exe文件,则可以按照以下步骤操作:
1. 运行可执行文件。 2. 在VS中导航到“调试”->“附加到进程”。 3. 找到通过运行可执行文件创建的进程,然后单击“附加”。
但是,如果您尝试运行的可执行文件几乎立即失败或快速运行并退出,则可以尝试以下步骤:
1. 在代码开头设置调试点。 2. 将构建切换到Debug并运行应用程序。
如果您的应用程序在Debug模式下运行,但在执行exe文件时失败,则可以尝试以下步骤,以查看您的应用程序是否会在控制台窗口或其他地方提供更多信息:
1. 确保您的构建设置为Release。 2. 导航到“调试”->“启动而不调试”。

2
如果您有源代码,可以使用 Debugger.Launch();。您可以将其放置在代码中的任何位置,构建 .exe 文件,然后一旦它被启动(例如通过 Process.Start),并且到达 Debugger.Launch();,一个窗口将询问您如何连接到该进程。
enter image description here
通常,您会连接到某个 Visual Studio 实例,并且它会自动暂停调试器,以便在 Debugger.Launch(); 中断点所在的位置。然后,您可以打开项目文件(文件 -> 打开 -> 文件...)并在其中任意位置设置断点。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接