c++ - 巨大的C文件调试问题

标签 c++ c visual-studio

我的项目中有一个源文件,它有超过 65,536 行代码(准确地说是 112,444 行)。我正在使用“sqlite 合并”,它包含在一个巨大的源文件中。

我正在使用 MSVC 2005。问题是在调试期间出现的。一切都可以编译和链接。但是当我尝试使用调试器进入函数时 - 它显示了不正确的代码行。

有趣的是,正确的行号与调试器显示的行号之间的差异恰好是 65536。这让我怀疑(几乎可以确定)某些无符号短溢出。

我还怀疑这不是 MSVC 本身的错误。可能是调试信息格式的限制。也就是说,MSVC 使用的调试信息格式将行号存储为 2 字节的短整型。

有什么办法可以解决这个问题(除了将大文件切割成几个较小的文件之外)吗?

最佳答案

根据 MS 版主的说法,这只是调试器的一个已知问题(正如您指出的那样,编译器似乎可以很好地处理它)。除了使用较短的源文件之外,显然没有解决方法。查看对非常相似问题的官方回复 here

关于c++ - 巨大的C文件调试问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2875536/

相关文章:

c++ - 快速将 2 个 double 数组交织成具有 2 个 float 和 1 个 int(循环不变)成员的结构数组,并使用 SIMD double->float 转换?

C++ 字符串两边的括号

在 C 中将指针复制到结构内的结构的指针

c - 为什么使用返回值时将0移入堆栈?

c# - Xamarin Android : Failed to resolve type MvvmCross. Core.ViewModels.IMvxAppStart

visual-studio - 在Visual Studio中将多行代码格式化为单行

c++ - g++ -m32 在 debian amd64 上找不到 libstdc++

c++ - 后缀评估,为什么推送函数不更新堆栈变量的顶部?

c - 在一行中初始化C中的所有变量和未初始化的值

javascript - 在 Visual Studio 2010 中运行 javascript 函数时出现无效 ID 错误