windbg断点命中时,其它线程在运行吗

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了windbg断点命中时,其它线程在运行吗相关的知识,希望对你有一定的参考价值。

参考技术A 调试会话状态:包括,断点、打开的源文件、用户自定义别名。
调试器设置:符号文件、可执行文件路径、源文件路径等。
WinDbg图形界面信息:包括WinDbg窗口标题、默认字体、窗口在桌面的位置、打开的子窗口、以及每个子窗口的状态等。
WinDbg默认使用注册表来保存工作空间设置,其路径为:HKEY_CURRENT_USER/Software/Microsoft/WinDBG/Workspaces
在此路径下有四个键:User、Kernel、Dump和Explicit。前三个键分别用来保存用户态调试、内核态调试、调试转储文件时使用的默认空间。Explicit用以存储命名的工作空间。在四个键下的每个键对应于一个工作空间。键值名为工作空间的名称,键值就是这个工作空间的配置数据。
WinDbg支持使用文件来保存工作空间。这可以使用Save workspace to File。
使用Delete workSpaces可以删除工作空间。更快的方法是直接删除保存在注册表中的键值。

调试 .NET MAUI android 应用程序时断点未命中

【中文标题】调试 .NET MAUI android 应用程序时断点未命中【英文标题】:Breakpoints is not hitting while debugging a .NET MAUI android application 【发布时间】:2021-10-08 09:59:02 【问题描述】:

我一直在开发一个 MAUI android 应用程序,在调试时,断点没有命中,应用程序进入中断状态。但对于 Windows 应用程序,它运行良好。 我认为这是 Visual Studio 2022 中的 .NET 6 Android Tooling 的问题。这个问题有什么解决方案吗?

【问题讨论】:

我也有同样的问题。如果我发现了,我会报告。 请提供足够的代码,以便其他人更好地理解或重现问题。 没有必要提供任何代码,它只是 maui + vs bug 【参考方案1】:

以下是我为调试 MAUI Android 应用程序而执行的几个步骤。在此之后,我能够调试并获得我的常规异常并命中断点。

    将此代码添加到Android平台主要活动的OnCreate方法中

    AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException;

那么这个hander方法在同一个类中

private void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
 System.Diagnostics.Debug.WriteLine(e.ToString());

    重置您的 CLR 例外。快捷键是 (Ctrl+Alt+E)。

    只需双击 CLR Exceptions 复选框即可重置。

    仅在选项中禁用调试代码

【讨论】:

我尝试了这个解决方案,但我仍然遇到同样的问题 嗨@sina,您能否提供一个基本的演示到github或驱动程序,以便我们尝试重现我们这边的问题?【参考方案2】:

我在调试一些项目时也遇到了问题。 (预览版 17.1.0)失败的项目设置如下。

<PropertyGroup>
    <TargetFrameworks>net6.0-ios;net6.0-android;net6.0-maccatalyst</TargetFrameworks> ...

移动 Android 首先解决了我的问题

<PropertyGroup>
    <TargetFrameworks>net6.0-android;net6.0-ios;net6.0-maccatalyst</TargetFrameworks> ...

【讨论】:

以上是关于windbg断点命中时,其它线程在运行吗的主要内容,如果未能解决你的问题,请参考以下文章

请教OD如何给新线程下鼠标双击消息断点

解决VS调试时断点不会命中的问题

汇编语言断点怎么设

在 Visual Studio 中添加运行时断点如何工作?

Thread.sleep() 和断点之间的区别(暂停线程)

调试器未在 .NET 代码中命中断点