Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/124.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++;仅Eclipse外部的分段错误 我在Eclipse中开发了C++应用程序。在Eclipse之外运行时,在用户操作数一致(4)后,它会出现分段错误。一开始似乎没有什么特别的。我想我应该使用Eclipse来调试整个应用程序并找到bug。但是,当我从Eclipse运行应用程序时,它运行得很好。是否有人对如何解决此问题提出建议_C++_Eclipse_Ubuntu_Segmentation Fault_Sdl - Fatal编程技术网

C++;仅Eclipse外部的分段错误 我在Eclipse中开发了C++应用程序。在Eclipse之外运行时,在用户操作数一致(4)后,它会出现分段错误。一开始似乎没有什么特别的。我想我应该使用Eclipse来调试整个应用程序并找到bug。但是,当我从Eclipse运行应用程序时,它运行得很好。是否有人对如何解决此问题提出建议

C++;仅Eclipse外部的分段错误 我在Eclipse中开发了C++应用程序。在Eclipse之外运行时,在用户操作数一致(4)后,它会出现分段错误。一开始似乎没有什么特别的。我想我应该使用Eclipse来调试整个应用程序并找到bug。但是,当我从Eclipse运行应用程序时,它运行得很好。是否有人对如何解决此问题提出建议,c++,eclipse,ubuntu,segmentation-fault,sdl,C++,Eclipse,Ubuntu,Segmentation Fault,Sdl,谢谢 代码库太大,无法在此显示,但我缩小了导致分段错误的代码行: SDL_Surface* textSurface = TTF_RenderText_Solid( font, text.c_str(), color ); 奇怪的是,在同一次调用失败之前,它会调用这行代码数百次。字体和颜色的值是在别处定义的常量,每次都传入。所以他们每次都是一模一样的。text的值为“-”首先确保在eclipse中运行的版本与在命令行版本vs debug中运行的版本相同 由于不同的编译器设置或正在调试,某些错误将

谢谢

代码库太大,无法在此显示,但我缩小了导致分段错误的代码行:

SDL_Surface* textSurface = TTF_RenderText_Solid( font, text.c_str(), color );

奇怪的是,在同一次调用失败之前,它会调用这行代码数百次。字体和颜色的值是在别处定义的常量,每次都传入。所以他们每次都是一模一样的。text的值为“-”

首先确保在eclipse中运行的版本与在命令行版本vs debug中运行的版本相同

由于不同的编译器设置或正在调试,某些错误将发生更改。这些通常是由未初始化的数据引起的。valgrind之类的内存调试器工具可以帮助您发现此类问题,因为它们可以随机化未初始化数据的内容

还要确保编译设置中的所有警告都已打开。然后,编译器将警告您可能存在的错误内容

编辑: 是的,墙和书呆子可以得到所有警告


有时,对于难以找到的内存错误,错误实际上并不在SEGFULT发生的位置。segfault仅因未被注意到的早期错误而发生。最好使用valgrind之类的内存调试器。否则,您将不得不仔细检查大量代码。

根据Node的建议(请参阅对原始问题的评论,我通过Valgrind运行了我的应用程序。在清理Valgrind发现的内存管理问题后,我的问题消失了。谢谢!

请发布导致此问题的代码。我怀疑,由于未定义的行为,它在Eclipse上似乎运行良好。您是否尝试在Eclipse之外启动它,然后启动后附加调试器?可能有很多东西:环境变量、继承的文件描述符、设置的任何函数等。我添加了导致问题的代码行。启动后如何附加调试器?我建议在代码上运行valgrind或其他东西,这可能是由于缓冲区overruns或类似的东西。我正在使用gcc编译器。编译器选项已经有了-Wall,我添加了-pedantic。我没有收到任何警告。我对编译器警告标志不太熟悉,所以请告诉我是否还有其他我应该添加的东西。