gpt4 book ai didi

c# - 在 visual studio 中,当您在托管语言(如 C#)中更改您不拥有的属性时,如何中断调试器

转载 作者:太空狗 更新时间:2023-10-30 00:29:59 27 4
gpt4 key购买 nike

我遇到了一个奇怪的情况,有些东西将主 MDI 窗体的 TopMost 属性设置为 true。经过多次试验和错误后,我们非常确定这一定来自第三方库,但它不在我们期望的任何地方。

如果我们可以将应用程序设置为在设置此属性时在调试器中中断,那么修复此问题将非常容易。然而,这个属性是由 WinForms 库定义的,所以我们不能只在其中放置一个断点。

如果你正在使用一个你没有源代码的库,那将是无价的,但我担心这个问题没有解决方案,因为托管语言不支持数据断点(就我知道)。

那么,在 C# 中,当您无权在 setter 中放置断点时,有没有一种方法可以在属性更改时中断?这可以轻松解决许多边缘情况问题,在这些情况下,事情会因您无法预料的原因而发生变化。

最佳答案

可以在不属于您的代码上设置断点。由于 TopMost 是一个属性,您所要做的就是在 setter 上放置一个断点。

只需在 Visual Studio 中打开“断点”面板(调试 -> Windows -> 断点),单击“新建 -> 函数断点”,然后键入:

System.Windows.Forms.Form.set_TopMost

运行您的应用程序(确保符号已加载),然后获利。

请注意,您还需要确保禁用“仅我的代码”。进入工具 -> 选项 -> 调试 -> 常规,然后取消选中“仅启用我的代码”。

关于c# - 在 visual studio 中,当您在托管语言(如 C#)中更改您不拥有的属性时,如何中断调试器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43764992/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com