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