C ++代码在一台机器上运行,但在另一台

时间:2018-06-16 21:12:13

标签: c++ gdb

我有一个程序可以读取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}},wherelist,但这是我能找到的所有信息。

这可能是罪魁祸首?我查看了stackoverflow,它说它可能是gdb,但是这个方法经常在我的uni中的不同机器上使用(我没有修改它)。

1 个答案:

答案 0 :(得分:1)

  

这可能是罪魁祸首

这很常见:您的程序有未定义的行为(例如堆损坏或数据竞争),并且在一台计算机上“正常工作”而另一台计算机崩溃。

您的第一步应该是在Valgrind下运行该程序并修复它找到的任何错误。

您的第二步应该是使用地址,内存和线程Sanitizers设置程序。

  

这种方法经常在我的uni中的不同机器上使用(我没有修改它)。

问题很可能出在你自己的代码中,而不是发生崩溃的方法。