使用实时调试器进行调试 | 您所在的位置:网站首页 › 项目没有调试信息不能进行调试 › 使用实时调试器进行调试 |
在 Visual Studio 中使用实时调试器进行调试
项目11/29/2023
当一个在 Visual Studio 之外运行的应用发生错误或崩溃时,实时调试可自动启动 Visual Studio。 使用实时调试,可以测试 Visual Studio 外部的应用,并可在出现问题时打开 Visual Studio 开始调试。 实时调试适用于 Windows 桌面应用。 它不适用于通用 Windows 应用,也不适用于托管在本机应用程序(如可视化工具)中的托管代码。 提示 如果只想让实时调试器对话框停止显示,而不安装 Visual Studio,请参阅禁用实时调试器。 如果已安装 Visual Studio,可能需要从 Windows 注册表禁用实时调试。 在 Visual Studio 中启用或禁用实时调试可从 Visual Studio 的“工具”>“选项”(或“调试”>“选项”)对话框中配置实时调试。 注意 若要启用或禁用实时调试,必须以管理员身份运行 Visual Studio。 启用或禁用实时调试会设置一个注册表项,可能需要管理员权限来更改此注册表项。 若要以管理员身份打开 Visual Studio,右键单击 Visual Studio 应用程序,然后选择以管理员身份运行。 启用或禁用实时调试: 在“工具”或“调试”菜单上,选择“选项”>“调试”>“实时”。 注意 如果未显示“实时”菜单选项,请确保使用 Visual Studio 安装程序安装了实时调试程序。 在“启用这些代码类型的实时调试”框中,选择希望通过实时调试进行调试的代码类型:“托管”、“本机”和/或“脚本”。 选择“确定”。 如果启用了实时调试器,但它并未在应用程序崩溃或出错时打开,请参阅实时调试疑难解答。 从 Windows 注册表禁用实时调试即便在你的计算机中不再安装有 Visual Studio,仍可启用实时调试。 如果不再安装 Visual Studio,则可以通过编辑 Windows 注册表来禁用实时调试。 若要通过编辑注册表禁用实时调试,请执行以下操作: 从 Windows“开始”菜单,运行“注册表编辑器”(regedit.exe) 。 在“注册表编辑器”窗口中,找到并删除下列注册表项(如果存在): HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\DbgManagedDebugger HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows NT\CurrentVersion\AeDebug\Debugger
如果存在以下注册表项,请将其删除: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\DbgManagedDebugger HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AeDebug\Debugger 确保不要删除或更改任何其他注册表项。 关闭“注册表编辑器”窗口。 启用 Windows 窗体的实时调试默认情况下,Windows 窗体应用具有一个顶级异常处理程序,可让应用保持运行(如果能够恢复)。 如果 Windows 窗体应用引发未处理的异常,则会显示以下对话框: 若要启用实时调试而不是标准 Windows 窗体错误处理,请添加以下设置: 在 machine.config 或 .exe.config 文件的 system.windows.forms 部分中,将 jitDebugging 值设置为 true:: 在 C++ 窗体应用程序中,还要在 .config 文件或代码中将 DebuggableAttribute 设置为 true。 如果使用 /Zi 而不使用 /Og 进行编译,则编译器会替你设置此属性。 但是,如果要调试非优化发布版本,则必须通过在应用的 AssemblyInfo.cpp 文件中添加以下行来设置 DebuggableAttribute: [assembly:System::Diagnostics::DebuggableAttribute(true, true)];有关详细信息,请参阅 DebuggableAttribute。 使用实时调试此示例演示在应用引发错误时如何进行实时调试。 必须安装 Visual Studio,才能按照以下步骤操作。 如果未安装 Visual Studio,则可以免费下载 Visual Studio Community Edition。 请务必依次选择“工具”>“选项”>“调试”>“实时”,启用实时调试 。 本示例会在 Visual Studio 中创建 C# 控制台应用,该应用可引发 NullReferenceException。 在 Visual Studio 中,创建一个名为 ThrowsNullException 的 C# 控制台应用(“文件”>“新建”>“项目”>“Visual C#”>“控制台应用程序”)。 有关在 Visual Studio 中创建项目的详细信息,请参阅演练:创建简单的应用程序。 在 Visual Studio 中打开项目时,请打开 Program.cs 文件。 将 Main() 方法替换为以下代码,该代码会在控制台中打印一行,然后引发 NullReferenceException: static void Main(string[] args) { Console.WriteLine("we will now throw a NullReferenceException"); throw new NullReferenceException("this is the exception thrown by the console app"); }若要生成解决方案,请选择“调试”(默认值) 或“发布”配置,然后选择“生成”>“重新生成解决方案” . 注意 选择“调试”配置以获得完整调试体验。 如果选择发布配置,必须先关闭仅我的代码才能运行此过程。 可在“工具”>“选项”>“调试”下,取消选择“启用仅我的代码” 。有关生成配置的详细信息,请参阅了解生成配置。 在 C# 项目文件夹 ( ...\ThrowsNullException\ThrowsNullException\bin\Debug或 ...\ThrowsNullException\ThrowsNullException\bin\Release) 中打开生成的应用 ThrowsNullException.exe。 应看到以下命令窗口: “选择实时调试器”对话框将打开。 在“可用调试器”下,选择“的新实例”(如果尚未选择)。 选择“确定”。 ThrowsNullException 项目会在 Visual Studio 的新实例中打开,并在引发异常的代码行处停止执行: 可以从此时开始调试。 如果调试的是真实应用,则需要找出代码引发异常的原因。 注意 如果应用包含不受信任的代码,则会出现安全警告对话框,让你可决定是否继续进行调试。 继续调试前,请确定是否信任该代码。 代码是否为自己编写的? 如果应用程序在远程计算机上运行,你能否识别进程的名称? 如果应用在本地运行,请考虑计算机上运行恶意代码的可能性。 如果决定信任该代码,请选择“确定”。 否则,请选择“取消”。 实时调试疑难解答如果在应用崩溃时实时调试不启动,即使 Visual Studio 中已启用实时调试也是如此,则: 已知的 Windows 问题可能导致实时调试器启动失败。 修复方法是向以下注册表项添加值为“自动”的“DWORD 值”,以及值为“1”的“数值数据” : HKEY_LOCAL_MACHINE\Software\WOW6432Node\Microsoft\Windows NT\CurrentVersion\AeDebug (对于 32 位计算机)HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AeDebug Windows 错误报告可能会接管计算机上的错误处理。 若要修复此问题,请使用注册表编辑器向以下注册表项添加值为“已禁用”的“DWORD 值”,以及值为“1”的“数值数据” : HKEY_LOCAL_MACHINE\Software\WOW6432Node\Microsoft\Windows\Windows Error Reporting (对于 32 位计算机)HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\Windows Error Reporting 有关详细信息,请参阅 .WER 设置。 你可能会在实时调试过程中遇到以下错误消息: 无法附加到崩溃进程。 指定的程序不是 Windows 或 MS-DOS 程序。 调试器尝试附加到在另一个用户下运行的进程。 若要解决此问题,请在 Visual Studio 中依次打开“调试”>“附加到进程”(或按 Ctrl + Alt + P),然后在“可用进程”列表中查找要调试的进程。 如果不清楚进程名称,请在“Visual Studio 实时调试器”对话框中查找进程 ID。 在“可用进程”列表中选择该进程,然后选择“附加” 。 选择“否”可关闭“实时调试器”对话框。 未能启动调试器,因为没有用户登录。 没有用户登录到控制台,因此没有用户会话来显示实时调试对话框。 要解决此问题,请登录到计算机。 类没有注册。 调试器试图创建的 COM 类未进行注册,可能是由安装问题导致。 若要修复此问题,请使用 Visual Studio 安装程序重新安装或修复 Visual Studio 安装。 相关内容 调试器安全 初探调试器 “实时”对话框 ->“选项”->“调试” 安全警告:附加到不受信任的用户所拥有的进程可能很危险。 如果以下信息看起来可疑或你对此无法确定,请勿附加到此进程 |
CopyRight 2018-2019 实验室设备网 版权所有 |