2013-09-23 3 views
1

Мне нужно отладить процесс (начиная с внешнего exe), который завершается сразу после запуска, поэтому у меня нет времени на подключение. Как я могу его отладить?Отладить процесс, который завершается после запуска

UPD У меня нет исходного кода этого внешнего exe; Я могу декомпилировать его, но его невозможно скомпилировать

+0

Вы можете использовать windbg для перехода через внешний exe? http://labs.snort.org/awbo/windbg.txt – x29a

+2

Что это написано? Если он управляется, введите код 'Debugger.Break();' call в своем стартовом коде. Если native, закодируйте инструкцию break-point (int3). Либо вы должны попросить вас приложить отладчик при ударе точки брейка. –

+0

@ 500-InternalServerError, опубликуйте этот комментарий как ответ. Это должна быть принятая ИМО. –

ответ

3

Вам нужно запустить процесс для отладки в приостановленном состоянии. Visual Studio способен это, просто вызовите отладчик так:

devenv /debugexe yourprog.exe <arguments> 

Процесса будет запускаться приостановлено, так что вы будете иметь возможность перебирать первые инструкции до аварии.

См. Подробный ответ here.

+0

Он не работает в VS2012.Открывается оболочка VS, но отображается стандартный экран приветствия, а сеанс отладки не запускается. – user626528

+0

Если у него нет кода, нет смысла его приостанавливать. –

+0

@ user626528, вы можете захотеть поместить свое .exe имя в кавычки, если оно содержит пробелы. VS2012 работает для меня. –

0

Вам нужно запустить его с помощью отладчика. Это запустит программу с уже подключенным отладчиком.

Если вы не можете сделать это с помощью Visual Studio, вы можете использовать инструменты отладки Windows, входящие в состав Windows Driver Kit. Обратите внимание, что связанный набор для Windows 8.1, вам может потребоваться найти более старые версии, если вы не в Windows 8.

-1

Вы можете включить режим выполнения отладки, разместив часть кода. написать метод, как показано ниже:

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

и вызвать этот метод, в котором вы хотите, чтобы начать отладку, например, в случае OnStart. вам нужно создать свой код в режиме отладки. Не забудьте удалить этот фрагмент кода после отладки и выпустить его.

+0

Это внешний exe, я не могу ничего в него вставить. – user626528

+0

, если это внешний exe, но у вас есть код, если у вас нет кода, который вы не можете его отладить. вы хотите отладить exe без его кода ??? отлаживать с чем? – VahiD

+0

не очень. вы можете легко отладить процесс без исходного кода – user626528

1

Вам просто нужно открыть Visual Studio, перейдите к File -> Open -> Project/Solution и выберите exe.

Нажмите F5, и вы увидите исключение в окне вывода. Если вы перейдете в окно Debug -> Exceptions и выберите все, что вы увидите, первое исключение случайности, прежде чем он выключит приложение.

Обратите внимание, что для этого вам не нужен исходный код.

Надеюсь, это поможет.

Смежные вопросы