Core was generated by `/usr/bin/Demo'. Program terminated with signal SIGSEGV, Segmentation fault. #0 std::__shared_ptr<Database, (__gnu_cxx::_Lock_policy)2>::__shared_ptr (this=0xf5e1b58c, this@entry=0xf5e1b554) at /usr/include/c++/11.5.0/bits/shared_ptr_base.h:1152 1152 /usr/include/c++/11.5.0/bits/shared_ptr_base.h: No such file or directory. [Current thread is 1 (LWP 13645)]
我们通过bt命令打印函数堆栈:
1 2 3 4 5 6 7 8 9
(gdb) bt #0 std::__shared_ptr<Database, (__gnu_cxx::_Lock_policy)2>::__shared_ptr (this=0xf5e1b58c, this@entry=0xf5e1b554) at /usr/include/c++/11.5.0/bits/shared_ptr_base.h:1152 #1 std::shared_ptr<Database>::shared_ptr (this=0xf5e1b58c, this@entry=0xf5e1b554) at /usr/include/c++/11.5.0/bits/shared_ptr.h:150 #2 Context::GetDatabase (this=0x0) at /home/linjw/workspace/demo_code/src/common/context.cpp:141 #3 0x00688206 in AudioServiceImpl::GetVolume (this=<optimized out>) at /home/linjw/workspace/demo_code/impl/src/audio/audio_service_impl.cpp:68 ...
(gdb) info threads Id Target Id Frame * 1 LWP 13645 std::__shared_ptr<Database, (__gnu_cxx::_Lock_policy)2>::__shared_ptr (this=0xf5e1b58c, this@entry=0xf5e1b554) at /usr/include/c++/11.5.0/bits/shared_ptr_base.h:1152 2 LWP 13642 __libc_do_syscall () at ../sysdeps/unix/sysv/linux/arm/libc-do-syscall.S:46 3 LWP 13652 __libc_do_syscall () at ../sysdeps/unix/sysv/linux/arm/libc-do-syscall.S:46 4 LWP 13647 __libc_do_syscall () at ../sysdeps/unix/sysv/linux/arm/libc-do-syscall.S:46 5 LWP 13662 __libc_do_syscall () at ../sysdeps/unix/sysv/linux/arm/libc-do-syscall.S:46 6 LWP 13654 __libc_do_syscall () at ../sysdeps/unix/sysv/linux/arm/libc-do-syscall.S:46 7 LWP 13648 __libc_do_syscall () at ../sysdeps/unix/sysv/linux/arm/libc-do-syscall.S:46 8 LWP 13655 __libc_do_syscall () at ../sysdeps/unix/sysv/linux/arm/libc-do-syscall.S:46 9 LWP 13644 __libc_do_syscall () at ../sysdeps/unix/sysv/linux/arm/libc-do-syscall.S:47 10 LWP 13656 __libc_do_syscall () at ../sysdeps/unix/sysv/linux/arm/libc-do-syscall.S:47 11 LWP 13643 __libc_do_syscall () at ../sysdeps/unix/sysv/linux/arm/libc-do-syscall.S:47 12 LWP 13657 __libc_do_syscall () at ../sysdeps/unix/sysv/linux/arm/libc-do-syscall.S:47 13 LWP 13659 __libc_do_syscall () at ../sysdeps/unix/sysv/linux/arm/libc-do-syscall.S:47 14 LWP 13649 __libc_do_syscall () at ../sysdeps/unix/sysv/linux/arm/libc-do-syscall.S:46 15 LWP 13650 __libc_do_syscall () at ../sysdeps/unix/sysv/linux/arm/libc-do-syscall.S:46 16 LWP 13651 __libc_do_syscall () at ../sysdeps/unix/sysv/linux/arm/libc-do-syscall.S:46 17 LWP 13660 __libc_do_syscall () at ../sysdeps/unix/sysv/linux/arm/libc-do-syscall.S:47 18 LWP 13661 __libc_do_syscall () at ../sysdeps/unix/sysv/linux/arm/libc-do-syscall.S:46 19 LWP 13639 __libc_do_syscall () at ../sysdeps/unix/sysv/linux/arm/libc-do-syscall.S:47
接着可以通过thread 19命令将上下文环境切到主线程:
1 2 3 4
(gdb) thread 19 [Switching to thread 19 (LWP 13639)] #0 __libc_do_syscall () at ../sysdeps/unix/sysv/linux/arm/libc-do-syscall.S:47 47 ../sysdeps/unix/sysv/linux/arm/libc-do-syscall.S: No such file or directory.
(gdb) f 2 #2 0x00699160 in SetEnable (enable=<optimized out>) at /home/linjw/workspace/demo_code/impl/src/system/mcu/mcu.cpp:55 55 /home/linjw/workspace/demo_code/impl/src/system/mcu/mcu.cpp: No such file or directory.