問題解決:shared_ptr Assertion px != 0 failed 及debug經驗分享
問題解決:shared_ptr Assertion px != 0 failed及debug經驗分享
問題詳細描述:
/usr/include/boost/smart_ptr/shared_ptr.hpp:646: typename boost::detail::sp_dereference::type boost::shared_ptr::operator*() const [with T = pcl::PointCloudpcl::pointxyz; typename boost::detail::sp_dereference::type = pcl::PointCloudpcl::pointxyz&]: Assertion `px != 0’ failed. Aborted (core dumped)
問題原因:
在使用boost::shared_ptr之前未進行初始化或者未正確初始化
錯誤程式碼示例:
class Listener
{
public:
#在這裡使用cloud_passthrough時未正確初始化
pcl::PointCloud<pcl::PointXYZ>::Ptr cloud_passthrough;
void callback(const sensor_msgs::PointCloud2ConstPtr& kinect_output);
};
// end class
void Listener::callback(const sensor_msgs::PointCloud2ConstPtr& kinect_output)
{
pcl::PCLPointCloud2::Ptr pc2 (new pcl::PCLPointCloud2());
pcl_conversions::toPCL (*kinect_output, *pc2);
pcl::PCLPointCloud2::Ptr cloud_filtered (new pcl::PCLPointCloud2 ());
pcl::VoxelGrid<pcl::PCLPointCloud2> sor;
sor.setInputCloud (pc2);
sor.setLeafSize(0.01f,0.01f,0.01f);
sor.filter(*cloud_filtered);// filter the point cloud
pcl::PointCloud<pcl::PointXYZ>::Ptr cloudXYZ (new pcl::PointCloud<pcl::PointXYZ>);//object cloud for point cloud type XYZ
pcl::fromPCLPointCloud2(*cloud_filtered,*cloudXYZ);
//create passthrough filter object
pcl::PassThrough<pcl::PointXYZ> pass;
pass.setInputCloud (cloudXYZ);
pass.setFilterFieldName("z");
pass.setFilterLimits(0.5, 1.5);
pass.filter(*cloud_passthrough);
}
int main (int argc, char **argv)
{
ros::init (argc, argv, "PointCloud2_to_pointCloudXYZ");
ros::NodeHandle nh;
Listener listener;
ros::Publisher pub = nh.advertise<pcl::PointCloud<pcl::PointXYZ> >("/filtered", 1000);
pcl::PointCloud<pcl::PointXYZ>::Ptr cloud (new pcl::PointCloud<pcl::PointXYZ>);
cloud -> points = listener.cloud_passthrough->points;
ros::Rate loop_rate(10);
ros::Subscriber sub = nh.subscribe <sensor_msgs::PointCloud2> ("/camera/depth/points",1000,&Listener::callback, &listener);
while (ros::ok())
{
pub.publish (cloud);
ros::spinOnce();
loop_rate.sleep();
}//end while loop
return 0;
}//end main
正確初始化示例:
pcl::PointCloud<pcl::PointXYZ>::Ptr cloud_passthrough(new pcl::PointCloud<pcl::PointXYZ>);
boost::shared_ptr<Obj> obj;
obj->Something(); // assertion failed
boost::shared_ptr<Obj> obj(new Obj);
obj->Something(); // ok
最後分享一個debug的經驗,能夠使用科學上網的童鞋,可以Google搜尋stack overflow網站,針對自己遇到的問題進行搜尋,一般情況下均可以搜到對應的解決方法(ps:回答前帶有綠色對號的基本為經過人們驗證的正確解決方案)。
相關文章
- 解決父母的養老問題,有哪些好經驗值得分享?
- VS C++ 出現debug assertion failed彈框,怎麼定位程式碼C++AI
- Debug經驗
- _gcry_ath_mutex_lock: Assertion `*lock == ((ath_mutex_t) 0)' failed.GCMutexAI
- 解決ssh的"Write failed: Broken pipe"問題AI
- 關於Failed to resolve的問題解決AI
- [轉]經驗分享:微信小程式外包接單常見問題及流程微信小程式
- 解決windows下WslRegisterDistribution failed with error: 0x80070050的問題WindowsAIError
- Ping:Transmit Failed, Error Code 65問題解決MITAIError
- socket write failed(24) _Netbackup的問題解決AI
- 解決繪圖時閃爍問題的一點經驗繪圖
- DDD經驗:分享工作,分享決策 – Jessitron
- Oracle問題解決方法ORA-0Oracle
- [經驗]iOS開發-記錄下在開發過程中遇到的問題的解決方案及經驗總結-1iOS
- 常見問題及解決
- tensorflow.python.framework.errors_impl.InvalidArgumentError: assertion failed: [0] [Op:Assert] namePythonFrameworkErrorAI
- Java 應用壓測效能問題定位經驗分享Java
- Gentoo startx出現Failed to load module問題解決AI
- px、em和rem實戰經驗REM
- 分享net面試題和經驗面試題
- 【kiss0kill】SQL SERVER EXPRESS 常見問題及解決辦法SQLServerExpress
- react解決ios微信分享的問題ReactiOS
- Git常見問題及解決Git
- Harbor搭建及配置 問題解決
- 跨域問題及解決方案跨域
- redis安裝及問題解決Redis
- 常見問題及解決方案
- JSR 303驗證相關問題及解決 辦法JS
- ASSERTION FAILED: TLS ALLOCATOR ALLOC_TEMP_THREAD...AITLSthread
- CTP failed,Mcdata4500 電源故障的問題解決AI
- 7 種方案解決移動端1px邊框的問題
- 2015異常問題解決方案經驗總結(一)
- ERP、MES及WMS經驗分享(轉)
- 解決C3P0在Linux下Failed to get local InetAddress for VMID問題LinuxAI
- 解決「問題」,不要解決問題
- Keil中 "STARTUP.A51" SET (SMALL) DEBUG EP問題解決方法
- 經驗分享 ----------
- 經驗分享