Как автоматически запустить отладчик для отладки 32-битных приложений в 64-битной Windows 7? - PullRequest
6 голосов
/ 13 июля 2011

Я пытаюсь, чтобы Windows автоматически запускала отладчик при запуске приложения (как описано в msdn ), однако я получаю следующую ошибку:

Visual Studio отладчик Just-In-Time не был уведомлен о том, что приложение правильно запустилось

Был найден быстрый поиск этого человека с той же проблемой , где было предложено:

Если вы используете Vista или Win7, вам нужно запустить vsjitdebugger от имени администратора, иначе вы получите эту ошибку.

Я перешел на C:\Windows\System32\ и во вкладке совместимости свойств vsjitdebugger.exe я установил флажок Запускать эту программу от имени администратора . Теперь я получаю следующее сообщение

Запрошенная операция требует повышения

Вслед за

Не могу открыть этот элемент
Возможно, он был перемещен, переименован или удален. Вы хотите удалить этот элемент?

Я не уверен, имеет ли значение тот факт, что это 32-битное приложение на 64-битной ОС.

Ответы [ 2 ]

15 голосов
/ 14 сентября 2011

Вы должны запускать ваше приложение от имени администратора (не устанавливайте vsjitdebugger.exe для запуска от имени администратора).Затем вам будет выдано предупреждение с предупреждением о безопасности и после этого обычный список с отладчиками на выбор.В моем случае мне пришлось запускать программу администратора, которая запускает отлаженную программу.

1 голос
/ 26 ноября 2018

Так что, посмотрев вокруг решения этой проблемы, я нашел ответ здесь .Проблема для меня состояла в том, что кусты реестра отладчика не были установлены должным образом.Это происходит из-за отсутствия записи Auto, хотя я не уверен.У меня не было этой проблемы до обновления до Windows 10. Записи реестра должны быть:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AeDebug]
"Auto"="1"
"Debugger"="\"C:\\WINDOWS\\system32\\vsjitdebugger.exe\" -p %ld -e %ld"
"UserDebuggerHotKey"=dword:00000000

[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows NT\CurrentVersion\AeDebug]
"Auto"="1"
"Debugger"="\"C:\\WINDOWS\\system32\\vsjitdebugger.exe\" -p %ld -e %ld"
"UserDebuggerHotKey"=dword:00000000

Чтобы отключить отладку JIT, используйте:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AeDebug]
"Auto"="1"
"Debugger"=-
"UserDebuggerHotKey"=-

[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows NT\CurrentVersion\AeDebug]
"Auto"="1"
"Debugger"=-
"UserDebuggerHotKey"=-

Просто к сведению, янаписал простой сценарий cmd для включения / выключения для каждого имени исполняемого файла.Я публикую его здесь для вашего удобства:

@echo off
if %1.==. goto help
if %1==/internal goto apply
if %1==/d (
        %0 /internal %2 -
) else (
        %0 /internal %1 "vsjitdebugger.exe"
)
goto help

:apply
shift
 >%temp%\output.reg     echo Windows Registry Editor Version 5.00
>>%temp%\output.reg     echo+
if %2 == - (
  : Delete registry key
        >>%temp%\output.reg     echo [-HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\%~1]
) else (
  : Add registry key
        >>%temp%\output.reg     echo [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\%~1]
        >>%temp%\output.reg     echo "debugger"=%2
)
:In case you want to see what it is importing, uncomment the following 3 lines
:echo %temp%\output.reg
:echo --------------------
:type %temp%\output.reg
regedit /s %temp%\output.reg
del %temp%\output.reg
goto :eof

:help
echo %0 [/d] ^<executable.exe^>
echo.
echo Allows you to attach a debugger as soon as the process executes anywhere in the
echo system. If /d switch is provided, then delete the registry key to stop this
echo behaviour.

Из-за использования %0 вы можете назвать его как угодно (с расширением .cmd или .bat), и он будетвсе еще работает как ожидалось.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...