1. 如果发现有“segmentation fault”之类的问题,可以借助gdb对程序进行调试
  2. 在运行程序之前输入:
    service apport stop
    ulimit -c unlimited
  3. 运行程序,比如“./demo”

  4. 寻找问题:

    gdb ./demo core #如果前面使用了sudo命令运行,则需要使用“sudo gdb ./demo core”
    bt # 进入gdb之后输入,就可以看到是什么问题了
  5. 问题显示类似:

    Using host libthread_db library "/lib/aarch64-linux-gnu/libthread_db.so.1".
    Core was generated by `./bin/nanotrack 1 config.conf'.
    Program terminated with signal SIGSEGV, Segmentation fault.
    #0  0x0000007fa7d0d6e4 in __GI___pthread_mutex_lock (mutex=0x130) at pthread_mutex_lock.c:67
    67      pthread_mutex_lock.c: No such file or directory.
    [Current thread is 1 (Thread 0x7f88e67010 (LWP 30586))]
    (gdb) bt
    #0  0x0000007fa7d0d6e4 in __GI___pthread_mutex_lock (mutex=0x130) at pthread_mutex_lock.c:67
    #1  0x000000555d0b40f0 in Loggers::INFO(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >) ()
    #2  0x0000007fa7ce4444 in BYTETracker::diff_cls_iou_tracks(std::vector<STrack, std::allocator<STrack> >&, BYTETracker*&, std::vector<STrack, std::allocator<STrack> >&, std::vector<STrack, std::allocator<STrack> >&, std::vector<STrack, std::allocator<STrack> >&, float) () at /home/nvidia/xxx/build/libbytetrack.so
    ---Type <return> to continue, or q <return> to quit---
    #3  0x0000007fa7cce50c in BYTETracker::update(int, std::vector<Object, std::allocator<Object> > const&, std::vector<STrack, std::allocator<STrack> >&, BYTETracker*&, Loggers*) ()
        at /home/nvidia/xxx/build/libbytetrack.so
    #4  0x000000555d0bfdd8 in Trtyolosort::TrtDetect(cv::Mat&, std::vector<BoxInfo, std::allocator<BoxInfo> >&, OutputType, cv::Mat&, cv::Mat&) ()
    #5  0x000000555d08f0f0 in main ()

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐