gpt4 book ai didi

c# - 无法正确单步执行静态构造函数中的代码(VS2019、C#、.NET 4.7.2)

转载 作者:行者123 更新时间:2023-12-04 03:34:16 24 4
gpt4 key购买 nike

我正在尝试在中断模式下逐步执行静态构造函数的代码。

项目是C#/.NET 4.7.2/64-bit/WinForms。 Visual Studio 版本为 2019 16.9.4 Community。

Visual Studio 在到达静态构造函数中设置的断点时正确中断。然后我可以使用“Step Into”命令 (F11) 单步执行代码。如您所见,静态构造函数调用静态方法来完成繁重的工作。

该代码包含一个应迭代 10 次的循环。我应该能够逐步完成所有迭代。相反,在第一次迭代之后,调试突然跳转到——或“恢复”——在稍后的某个时间点,回到调用类(或者更准确地说,触发 CLR 执行静态构造函数的类)。所以我无法完成剩余的 9 次迭代。

我确信所有迭代都确实执行了,因为我添加了一些调试代码以在每次执行 finally block 时打印一些内容。但是,我很沮丧,因为我无法单步执行代码。看起来像是一个可笑的 VS 错误,因为在调试时能够单步执行代码是一件非常基本的事情。

因为这个问题很难描述清楚,我创建了一个动画 GIF 来直观地显示调试 session :

Visual Studio 2019 debug session example

我在网上广泛搜索,找不到其他人报告我遇到的这类问题。这让我想知道我是否做错了什么(例如,我是否需要调整一些调试器设置或其他什么?)。非常感谢任何帮助或见解。

更新

我无法在 32 位调试版本中重现该问题。该问题(到目前为止)仅存在于 64 位调试版本中。

如何复制

我制作了一个小型演示项目。随意下载并尝试自己调试。当遇到断点时,使用 F11 单步执行代码。看看你能不能循环 10 次 ;-)

Debug Test Project (VS2019)

在我这边,如果我将构建配置从 x64 更改为 Any CPU,问题就会消失。所以这可能只是 64 位问题。

try/finally block 似乎确实揭示了这个问题。我不确定还有哪些其他模式也能揭示这个问题。

已提交错误报告

https://developercommunity.visualstudio.com/t/The-debugger-does-not-step-through-a-met/1407274

最佳答案

这是 .NET 运行时中的错误。您可以在此处跟踪错误:

https://github.com/dotnet/runtime/issues/52328

关于c# - 无法正确单步执行静态构造函数中的代码(VS2019、C#、.NET 4.7.2),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67250730/

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