gpt4 book ai didi

debugging - 盲源步进的奥秘,或F#在大型源文件上的行为异常

转载 作者:行者123 更新时间:2023-12-02 10:54:26 25 4
gpt4 key购买 nike

我正在测试是否可以依靠__LINE__始终返回正确的值,并创建了一个包含许多行的大型源文件。

在某个时候,内联函数名称(其名称类似于fun@7564-1,其中7564是行号)再次从零开始计数。

经过研究,我注意到:

  • 如果您的源代码达到65536行,则任何错误,消息,堆栈跟踪都将从
  • 零开始计数
  • __LINE__仍返回正确的值
  • 内联函数的修饰名称再次从零开始
  • 编译时错误在完全不相关的行下划线
  • 逐步调试通过完全不相关的行
  • 在实际行上设置断点会将其设置在“盲”行上
  • 在调试过程中,变量上的工具提示仍显示正确的值,并且“盲”点中没有工具提示。

  • 为了说明这一点,使用了许多换行符,并且调试的方法超过了65535行,我设法获得了盲目的源代码步进体验:

    Blind source stepping

    这是216条边界的刻意还是偶然?它是F#还是CLR或PDB格式人为施加的限制?

    注意(1):我仅使用VS 2015在Windows 7和2012上使用F#4.0,.NET 4.5进行了此测试。
    注意(2):我怀疑这个边界是否会经常出现,除非对于自动生成的源文件(在C#中,我有一些超出此边界的自动生成的文件)。

    更新:报告为 bug to the FSharp team on Github here

    最佳答案

  • 我尝试使用大文件进行复制,这在我的机器上也很奇怪。
  • 在GitHub存储库Don Syme has replied and asked something about your source code中。这可能是当前Visual F#工具的局限性。

  • 这似乎是 confirmed bug in Visual F#,错误报告中有 full repro solution for download

    对于大型源文件,在Debug版本中有 related issue会抛出 StackOverflowException,而在大型lambda或入口点上会有 another related issue also throwing an SOE,但在任何版本中都存在。

    关于debugging - 盲源步进的奥秘,或F#在大型源文件上的行为异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33794570/

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