我有一个程序可以读取OCT图像并将其转换为点云。我将程序编译为可执行文件,将其复制到另一台机器上。我试图运行机器的可执行文件并获得Seg Fault代码:
Thread 1 "OpenCLBA-Prod" received signal SIGSEGV, Segmentation fault.
0x0000000000423ca1 in generatePointCloudFromModel(boost::shared_ptr<pcl::PointCloud<pcl::PointXYZ> >&, boost::shared_ptr<pcl::PointCloud<pcl::PointXYZ> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >) ()
这是我尝试运行gdb list
时的消息:
../sysdeps/x86_64/dl-procinfo.c: No such file or directory.
我使用了backtrace
的{{1}},where
和list
,但这是我能找到的所有信息。
这可能是罪魁祸首?我查看了stackoverflow,它说它可能是gdb
,但是这个方法经常在我的uni中的不同机器上使用(我没有修改它)。
答案 0 :(得分:1)
这可能是罪魁祸首
这很常见:您的程序有未定义的行为(例如堆损坏或数据竞争),并且在一台计算机上“正常工作”而另一台计算机崩溃。
您的第一步应该是在Valgrind下运行该程序并修复它找到的任何错误。
您的第二步应该是使用地址,内存和线程Sanitizers设置程序。
这种方法经常在我的uni中的不同机器上使用(我没有修改它)。
问题很可能出在你自己的代码中,而不是发生崩溃的方法。