使用libpcl_surface在boost :: math :: lanczos中调试seg fault

Ger*_*imo 6 c++ debugging boost segmentation-fault point-cloud-library

只有在我使用调试标志编译的代码上使用gdb进行调试时,才会出现以下错误

Program received signal SIGSEGV, Segmentation fault.
0x00007fffc79a7ff0 in boost::math::lanczos::lanczos_initializer<boost::math::lanczos::lanczos17m64, long double>::init::init() ()
from /usr/lib/libpcl_surface.so.1.7
Run Code Online (Sandbox Code Playgroud)

操作系统:unbutu 14.04

我有最新的pcl库(1.7 Sprikelhof)和boost库(1.54)

注意,在gdb外部运行时没有段错误.

小智 8

编译使用时我遇到了类似的问题,-std=c++11但仅限于Debug模式:set(CMAKE_BUILD_TYPE Debug).在ReleaseRelWithDebInfo模式中,一切都按预期工作.

Debug-O1选项解决了优化编译代码(在模式下)的问题.即set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -O1").

我不知道为什么它有效,但它对我有用.