gpt4 book ai didi

visual-studio-2012 - VS2012 - 为什么我的主 UI 线程显示绿色调试语句?

转载 作者:行者123 更新时间:2023-12-04 02:21:31 26 4
gpt4 key购买 nike

编辑 :如果您看到同样的问题(并且您习惯于在 VS2010 下看不到这个问题),请在下面发表评论,这样我就知道不仅仅是我 - 但一定要检查 Han 的回答,以确保没有出现这些情况。 .

我一直在更新我的应用程序,使其在 VS2012 RTM 中与 .NET 4.5 一起运行,并注意到一些我不太理解的东西,即意外以绿色突出显示的语句(而不是黄色)。

enter image description here

现在我很清楚这意味着什么,IDE 甚至向我展示了一些解释工具提示。

This is the next statement to execute when this thread returns from the current function



但是,绝对没有基于此代码的异步或线程。在这个简单的例子中,我相信你会同意 string.ToUpper()不会在另一个线程中关闭。我可以通过代码没有问题。

没有其他事情发生,正如您在此处看到的那样,我在主线程上。

s

上午 使用 asyncawaitMVVM-Light (上述方法是 RelayCommand 的结果)但即使代码路径直接关闭事件处理程序(例如 PreviewKeyDown),我仍然会得到这种行为。 .

enter image description here

如果我创建一个新的应用程序,我将无法复制它 - 颜色是预期的黄色 - 即使使用 await .

有人知道吗?它开始让我发疯!!

最佳答案

当当前指令指针不完全位于语句的开头时,它是绿色的。一些常见的原因:

  • 在线程代码中很常见,在一个线程中设置断点并将上下文切换到另一个线程。另一个线程将在完全随机的位置被调试器中断。通常在没有源代码或调试信息的代码中,例如 String.ToUpper(),调试器只能显示“最接近”的源代码
  • 使用 Debugger + Break All 进入调试器。同上思路,指令指针会在一个随机地址
  • 在没有调试信息的代码中出现异常。编辑器显示调用堆栈中具有源代码的最后一个条目。您需要调用堆栈窗口来查看引发实际异常的位置。或者异常助手,它的原因是
  • 调试优化的代码。抖动优化器对代码的打乱非常严重,使得调试器可能无法准确显示当前位置
  • 在调试时有过时的调试信息或编辑代码
  • x64 抖动生成的调试代码发生在项目的目标平台设置为 AnyCPU 时。 x64 抖动有许多没有得到修复的长期错误,生成不正确的调试信息就是其中之一。在完全重写之前没有解决的问题,由 RyuJIT 项目完成并首次在 .NET 4.6 版中可用。在您的 EXE 项目中以 x86 为目标是解决方法。
  • 关于visual-studio-2012 - VS2012 - 为什么我的主 UI 线程显示绿色调试语句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12415557/

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