无法调试一些代码?奇怪的堆栈与MSVC?

时间:2011-02-22 10:19:05

标签: 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!__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()

这是内存访问违规! 不幸的是我不知道这个问题......

有关我使用VS 2008 + QT + BOOST + OpenCL

的信息

奇怪的是,我知道“问题发生在哪里”......我只需要删除一行特定的代码......并且不会再出现错误(但软件不会做它应该做的事情:-P )

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

我只能在我看到我的方法时显示“反汇编”,但不能显示C ++代码和上下文!但为什么呢?

如果有人有想法帮我调试这个?

感谢您的帮助

1 个答案:

答案 0 :(得分:1)

每次我得到这种堆栈并删除代码都会有效,这是因为我做了... 堆栈溢出:)

你很可能在筹码上有太大的东西。

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