root@7-arm:/home/chien# make
make:"DeltaRobot"时最新的
root@7-arm:/home/chien# ./DeltaRobot
段错误
①
root@7-arm:/home/chien# dmesg -c
[1381688.961266] DeltaRobot[22665]: segfault at 4 ip 0804f9d1 sp b74cb360 error in 4 DeltaRobot[8048000+19000]
②
root@7-arm:/home/chien# ulimit -c
0
root@7-arm:/home/chien# ulimit -c unlimited
root@7-arm:/home/chien# ./DeltaRobot
段错误(吐核)
③
root@7-arm:/home/chien# scp core 192.168.168.116:/tmp
root@192.168.168.116's password:
core 100% 93M 11.6MB/s 00:08
root@7-arm:/home/chien# scp DeltaRobot 192.168.168.116:/tmp
root@192.168.168.116's password:
DeltaRobot 100% 194KB 194.0KB/s 00:00
④
root@7-arm:/home/chien# ssh 192.168.168.116
root@192.168.168.116's password:
root@UCN:#~ cd /tmp/
root@UCN:/tmp# ls
core .... .............
DeltaRobot ..... ...........
..... ..... .........
⑤
root@UCN:/tmp# gdb -c core
..............
..............
Core was generated by "./DeltaRobot".
Program terminated with Signal SIGSEGV,Segmentation fault.
#0 Ox0804f9d1 in ??()
..................
..................
root@UCN:/tmp# gdb DeltaRobot core
..............
..............
Core was generated by "./DeltaRobot".
Program terminated with Signal SIGSEGV,Segmentation fault.
#0 Ox0804f9d1 in CEncoder::TickLoop(p=OxO) at Encoder.cpp:69
69 Encoder.cpp:no such file or directory
.........
..................
查:Encoder.cpp
58 void CEncoder::TickLoop(void * p)
59 {
60 CEncoder * tmp;
61 tmp = (CEncoder *)p;
62 while(1)
63 {
64 #ifdef _WIN32;
65 Sleep(1);
66 #else
67 usleep(1000);
68 #endif
69 tmp->m_cnt++;
70 }
71}
72
73 bool CEncoder::startTickLoop()
{
#ifdef _WIN32
DWORD id;
HANDLE reth = CreateThread(NULL,0,(unsigned long(_stdcall *)(void *))TickLoop,this,0,&id);
if(reth == INVALID_HANDLE_VALUE)
{
return false
}
#else
unsigned long id;
int reth = pthread_create(&id,NULL,(void* (*)(void*))TickLoop,NULL);
if(reth == -1)
{
return false;
}
#endif
}
结果:
将 int reth = pthread_create(&id,NULL,(void* (*)(void*))TickLoop,NULL);
改为int reth = pthread_create(&id,NULL,(void* (*)(void*))TickLoop,(void*)this);
执行通过
注意:Makefile文件加 -g
cc=g++ -g
exe=DeltaRobot
................