gdb使用vscode调试C++问题
·
- 如果发现有“segmentation fault”之类的问题,可以借助gdb对程序进行调试
- 在运行程序之前输入:
service apport stop ulimit -c unlimited -
运行程序,比如“./demo”
-
寻找问题:
gdb ./demo core #如果前面使用了sudo命令运行,则需要使用“sudo gdb ./demo core” bt # 进入gdb之后输入,就可以看到是什么问题了 -
问题显示类似:
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 ()
更多推荐
所有评论(0)