无法调试某些代码? MSVC 的堆栈很奇怪?
有时我的应用程序崩溃并显示以下堆栈跟踪:
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++ 代码和上下文!但为什么 ?
如果有人有想法帮助我调试这个?
感谢您的帮助
Sometimes I got a crash of my application with the following stack trace :
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()
It is a memory access violation !
Unfortunately I have no idea of the problem...
For information I use VS 2008 + QT + BOOST + OpenCL
What is strange is that I know "where" the problem occur... I just have to remove a specific line of code... and no more error (But the soft doesn't do what it should :-P)
The call is on "my code" but this time I don't see my methods in the stack !!!! (I'm able to trace others code, other crashs before...)
I'm just able to show the "dissassembly" where I see my method, but not the C++ code and context !!! But why ?
If someone has an idea to help me to debug this ?
Thanks for your help
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
每次我得到这种堆栈并删除代码使其工作时,那是因为我做了... 堆栈溢出 :)
很可能你的堆栈上有太大的东西
检查函数中某处(通常是 main() 函数中)是否有太大的对象。确保大对象(管理器或类似的东西)始终分配在堆上。
Each time I got this kind of stack and removing code makes it works, it was because I did a ... stack-overflow :)
It's very probable that you have something too big on the stack.
Check that you don't have a too big object somewhere in a function, often in the main() function. Make sure big objects (managers or things like that) are always allocated on the heap.