如何解决C ++分段错误仅在Eclipse外部
| 我已经在Eclipse中开发了一个C ++应用程序。当在Eclipse之外运行时,在执行了相同数量(4)的用户操作后,它将导致分段错误。起初似乎没有什么特别的。我以为我会使用Eclipse调试应用程序并找到错误。但是,当我从Eclipse运行该应用程序时,它运行得很好。有人对如何解决此问题有建议吗? 谢谢。 该代码库太大,无法在此处显示,但我缩小了导致分段错误的代码行:SDL_Surface* textSurface = TTF_RenderText_Solid( font,text.c_str(),color );
奇怪的是,在完全相同的调用失败之前,它会多次调用该行代码。字体和颜色的值是在其他地方定义并每次都传入的常量。因此,它们每次都是完全相同的。文本的值为\“-\”。
解决方法
首先,请确保您在eclipse中运行与命令行发行版与调试版本相同的版本。
由于不同的编译器设置或只是调试,某些错误将更改。这些通常是由于未初始化的数据引起的。诸如valgrind之类的内存调试器工具可以帮助您发现此类问题,因为它们可以使未初始化数据的内容随机化。
另外,请确保所有警告在您的编译设置中都处于启用状态。然后,编译器将警告您有关潜在的不正确内容。
编辑:
是的-Wall和-pedantic适用于获取所有警告。
有时,由于很难找到内存错误,因此错误实际上并不是发生段错误的地方。发生段错误仅是因为之前的错误并未引起注意。最好使用valgrind之类的内存调试器。否则,您将必须仔细检查大量代码。
, 在Node的建议下(请参阅原始问题的评论,我通过Valgrind运行了我的应用程序。清除了Valgrind确定的内存管理问题后,我的问题就解决了。谢谢!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。