Debugging 无法调试某些代码?MSVC的奇怪堆栈?

Debugging 无法调试某些代码?MSVC的奇怪堆栈?,debugging,visual-c++,boost,fseek,Debugging,Visual C++,Boost,Fseek,有时,我的应用程序因以下堆栈跟踪而崩溃: atiocl.dll!0f6c463a() [Frames below may be incorrect and/or missing, no symbols loaded for atiocl.dll] atiocl.dll!0f2ed724() atiocl.dll!0f2ed82c() atiocl.dll!0f2ad8cb() OpenCL.dll!000a172c() pureStudio.exe!__fseeki6

有时,我的应用程序因以下堆栈跟踪而崩溃:

  atiocl.dll!0f6c463a()
  [Frames below may be incorrect and/or missing, no symbols loaded for atiocl.dll]
  atiocl.dll!0f2ed724()
  atiocl.dll!0f2ed82c()
  atiocl.dll!0f2ad8cb()
  OpenCL.dll!000a172c()
  pureStudio.exe!__fseeki64()  + 0xdec0 bytes C++
  pureStudio.exe!__fseeki64()  + 0x9b6f bytes C++
  pureStudio.exe!__fseeki64()  + 0x1f027 bytes C++
  msvcr90d.dll!5af8327f()
  ntdll.dll!77bb041d()
  ntdll.dll!77b79d45()
这是内存访问冲突! 不幸的是我不知道这个问题

有关信息,我使用VS2008+QT+BOOST+OpenCL

奇怪的是我知道问题发生在哪里。。。我只需要删除一行特定的代码。。。并且没有更多的错误(但是软件没有做它应该做的:-P)

调用是在“我的代码”上,但这次我在堆栈中看不到我的方法!!!!(我能够追踪其他代码,之前的其他崩溃…)

<>我只是能够显示“DssSc装配”,在那里我看到了我的方法,但没有C++代码和上下文!!!但是为什么呢

如果有人想帮我调试这个


感谢您的帮助

每次我得到这种堆栈并删除代码使其工作时,都是因为我做了一个堆栈溢出:)

很可能您的堆栈中有太大的内容。


检查函数中的某个地方是否有太大的对象,通常是在main()函数中。确保总是在堆上分配大对象(管理器或类似的东西)

调试代码的符号?看起来它没有任何符号,因为它只显示函数的地址…奇怪的是我有“调试符号”!我能够毫无问题地跟踪和调试我的代码,即使当我显示“模块”窗口时,我看到“加载的符号”!哼堆栈上有太大的东西。。。可能的但是我没有参数,我经常启动/停止同一个线程。我还分配了一个160字节的缓冲区。。。很多时候。。。但在新的分配之前,我删除了上一个!你有没有试着看看堆栈上是否没有任何大的对象?我几乎可以肯定这是一个确切的问题,但这是根据经验得出的:只有你才能验证或否定我的答案……1。查看在删除它时使其工作的代码,查看在那里实例化但不在堆上(不使用new或malloc)的一个对象是否有一个大的类型。2.如果什么都不明显,尝试二分法搜索,将代码一分为二,并查看哪个部分运行,直到看到哪个对象破坏了代码。如果找不到,请尝试确保在堆上分配了非基本类型对象(可能使用scoped_ptr之类的智能指针),以确保这不是问题所在。4.您也可以简单地查看项目设置堆栈内存大小,然后添加一些代码以在日志中显示错误代码中每种类型的大小。我什么也没有发现…最后我认为我的堆栈已损坏,可能是由于错误的“内存”操作。。。但如何检测呢?我甚至用“BoundsChecker”测试了软件,但一旦它崩溃。。。太晚了!此工具无法找到我的内存问题!真让我发疯!