我的项目中有一个源文件,它有超过 65,536 行代码(准确地说是 112,444 行)。我正在使用“sqlite 合并”,它包含在一个巨大的源文件中。
我正在使用 MSVC 2005。问题是在调试期间出现的。一切都可以编译和链接。但是当我尝试使用调试器进入函数时 - 它显示了不正确的代码行。
有趣的是,正确的行号与调试器显示的行号之间的差异恰好是 65536。这让我怀疑(几乎可以确定)某些无符号短溢出。
我还怀疑这不是 MSVC 本身的错误。可能是调试信息格式的限制。也就是说,MSVC 使用的调试信息格式将行号存储为 2 字节的短整型。
有什么办法可以解决这个问题(除了将大文件切割成几个较小的文件之外)吗?
最佳答案
根据 MS 版主的说法,这只是调试器的一个已知问题(正如您指出的那样,编译器似乎可以很好地处理它)。除了使用较短的源文件之外,显然没有解决方法。查看对非常相似问题的官方回复 here
关于c++ - 巨大的C文件调试问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2875536/