How to launch debugger automatically to debug 32 bit applications on Windows 7 64 bit?

前端 未结 2 982
面向向阳花
面向向阳花 2021-02-09 01:56

I\'m trying to have Windows automatically start the debugger when an application is launched (as described in msdn) however I\'m getting the following error:

相关标签:
2条回答
  • 2021-02-09 02:23

    So after looking around for the solution to this problem I found the answer here. The issue for me was that the debugger registry hives weren't set properly. This is prolly due to missing the Auto entry, though I'm not positive. I didn't have this issue before I upgraded to Windows 10. The registry entries need to be:

    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
    

    To disable JIT debugging use:

    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"=-
    

    Just a FYI, I wrote a simple cmd script to enable/disable on a per executable name basis. I'm posting it here for you convenience:

    @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.
    

    Because of the use of %0, you can name it whatever you want (with an .cmd or .bat extension) and it will still work as expected.

    0 讨论(0)
  • 2021-02-09 02:30

    You should run your application as an administrator (don't setup vsjitdebugger.exe to run as administrator). Then you will be prompted with the security warning and after that normal list with debuggers to choose from. In my case I had to run as an administrator program which runs debugged program.

    0 讨论(0)
提交回复
热议问题