首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在Windows 7 64位上自动启动调试器来调试32位应用程序?

如何在Windows 7 64位上自动启动调试器来调试32位应用程序?
EN

Stack Overflow用户
提问于 2011-07-13 10:00:50
回答 2查看 7.1K关注 0票数 11

在启动应用程序(作为在msdn中描述)时,我试图让Windows自动启动调试器,但是我得到了以下错误:

未通知Visual即时调试器应用程序已正确启动。

快速搜索发现了这个有同样问题的人,其中的建议是:

如果您正在运行Vista或Win7,您需要作为管理员运行vsjitdebugger,否则您将得到该错误。

我转到C:\Windows\System32\,在vsjitdebugger.exe属性的兼容性选项卡中,我选中了,以管理员身份运行程序复选框。

请求的操作需要高度。

紧接着是

无法打开此项 它可能已被移动、重命名或删除。要删除此项目吗?

我不确定这是64位操作系统上的32位应用程序这一事实是否相关。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-09-14 16:32:46

您应该以管理员身份运行应用程序(不要将vsjitdebugger.exe设置为管理员)。然后,系统会提示您使用安全警告,并在该正常列表之后使用调试器进行选择。在我的例子中,我不得不作为一个管理员程序运行,运行调试程序。

票数 18
EN

Stack Overflow用户

发布于 2018-11-26 19:09:04

因此,在寻找这个问题的解决方案之后,我找到了答案这里。对我来说,问题是调试器注册表单元没有正确设置。这很明显是因为错过了Auto条目,尽管我不是肯定的。升级到Windows 10之前,我没有这个问题。注册表项必须是:

代码语言:javascript
运行
复制
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调试,请使用:

代码语言:javascript
运行
复制
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"=-

只是一个FYI,我编写了一个简单的cmd脚本,在每个可执行文件名的基础上启用/禁用。我把它贴在这里是为了方便你:

代码语言:javascript
运行
复制
@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扩展),而且它仍将按预期工作。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6677161

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档