【问题标题】:debug seg fault in boost::math::lanczos with libpcl_surface使用 libpcl_surface 调试 boost::math::lanczos 中的段错误
【发布时间】:2014-12-08 09:55:27
【问题描述】:

仅当我在使用调试标志编译的代码上使用 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

操作系统:unbutu 14.04

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

注意,在 gdb 之外运行时不会出现段错误。

【问题讨论】:

  • 我在使用 GTSAM 库时遇到了同样的问题。无论我是否在 GDB 中运行,我每次都会遇到段错误。如果您找到答案,请发布答案。
  • 遇到了同样的问题,如果我禁用 C++11,它会以某种方式工作。
  • boost 1.58.0 的第一类和第二类球面贝塞尔函数 (sph_bessel) 存在同样的问题:如果启用了 C++11,则会出现分段错误。

标签: c++ debugging boost segmentation-fault point-cloud-library


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 2018-10-02
    • 1970-01-01
    • 2013-03-25
    • 2016-08-24
    • 2012-05-24
    • 1970-01-01
    • 1970-01-01
    • 2016-03-23
    • 1970-01-01
    相关资源
    最近更新 更多