1

我需要调试一个在启动后立即终止的进程(从外部 exe 开始),所以我没有时间附加。我该如何调试它?

UPD 我没有那个外部 exe 的源代码;我可以反编译它,但它不可能编译回来

4

4 回答 4

3

您需要在挂起状态下启动您的调试进程。Visual Studio 能够做到这一点,只需像这样调用调试器:

devenv /debugexe yourprog.exe <arguments>

该过程将开始暂停,因此您将能够在崩溃之前遍历第一条指令。

请参阅此处的详细答案。

于 2013-09-23T06:43:39.380 回答
1

您只需要打开 Visual Studio,转到File -> Open -> Project / Solution 并选择 exe。

按 F5,您将在“输出”窗口中看到异常。如果您转到Debug -> Exceptions窗口并选择所有内容,您将在关闭应用程序之前看到第一次机会异常。

请注意,您根本不需要源代码来执行此操作。

希望能帮助到你。

于 2013-09-23T06:37:40.077 回答
0

您需要使用调试器启动它。这将启动已附加调试器的程序。

如果您无法使用 Visual Studio 执行此操作,则可以使用 Windows 调试工具,它是Windows Driver Kit的一部分。请注意,链接工具包适用于 Windows 8.1,如果您不在 Windows 8 上,则可能需要查找旧版本。

于 2013-09-23T06:09:07.483 回答
-1

您可以通过放置一些代码来启用调试模式运行时。写一个方法如下:

[Conditional("DEBUG_SERVICE")]
private static void DebugMode()
{
    Debugger.Break();
}

并在要开始调试的地方调用此方法,例如在 OnStart 事件中。您必须使用调试模式构建代码。调试后不要忘记删除这段代码并要发布。

于 2013-09-23T06:12:10.827 回答