我需要调试一个在启动后立即终止的进程(从外部 exe 开始),所以我没有时间附加。我该如何调试它?
UPD 我没有那个外部 exe 的源代码;我可以反编译它,但它不可能编译回来
我需要调试一个在启动后立即终止的进程(从外部 exe 开始),所以我没有时间附加。我该如何调试它?
UPD 我没有那个外部 exe 的源代码;我可以反编译它,但它不可能编译回来
您需要在挂起状态下启动您的调试进程。Visual Studio 能够做到这一点,只需像这样调用调试器:
devenv /debugexe yourprog.exe <arguments>
该过程将开始暂停,因此您将能够在崩溃之前遍历第一条指令。
请参阅此处的详细答案。
您只需要打开 Visual Studio,转到File -> Open -> Project / Solution
并选择 exe。
按 F5,您将在“输出”窗口中看到异常。如果您转到Debug -> Exceptions
窗口并选择所有内容,您将在关闭应用程序之前看到第一次机会异常。
请注意,您根本不需要源代码来执行此操作。
希望能帮助到你。
您需要使用调试器启动它。这将启动已附加调试器的程序。
如果您无法使用 Visual Studio 执行此操作,则可以使用 Windows 调试工具,它是Windows Driver Kit的一部分。请注意,链接工具包适用于 Windows 8.1,如果您不在 Windows 8 上,则可能需要查找旧版本。
您可以通过放置一些代码来启用调试模式运行时。写一个方法如下:
[Conditional("DEBUG_SERVICE")]
private static void DebugMode()
{
Debugger.Break();
}
并在要开始调试的地方调用此方法,例如在 OnStart 事件中。您必须使用调试模式构建代码。调试后不要忘记删除这段代码并要发布。