【gdb&core】Linux中gdb 查看core堆栈信息1
【GDB】GDB 调试多线程和多进程总结
【调试】Linux查看程序卡死位置方法|GDB|strace|分析进程调用pstack和starce
【GDB】VisualStudio 2017跨平台(Linux)调试|可视化GDB|visual GDB
【GDB】GDB工作原理--ptrace(让父进程可观察和控制其它进程、检查和改变其核心映像及寄存器)
linuxGDB下动态链接库的调试(gdb) file <你的exe>
(gdb) load <你的so> #这条应该是可选的
(gdb) dir <so'dir>
(gdb) sharedlibrary <你的so>
(gdb) breakpoint <你的so中somewhere>
(gdb) run
load 是将动态库加载入内存。
sharedlibrary是将动态库的符号读入gdb,为了你能找到变量和函数名。
它们本身是没有明显的动作,但后面当你直接设置断点到动态库的函数(或行号)时,你就可以成功了。在此之前要记得用dir将动态库的源码也加入搜索路径。
报错记录(gdb) b mps_guide_db.c:1699
No source file named mps_guide_db.c.
可能是因为调用了动态库,要打断点的文件是动态库的
可以通过 以下方式得到解决:
(gdb) set breakpoint pending on
(gdb) b db_subscr_no_lookup
Function "db_subscr_no_lookup" not defined.
Breakpoint 1 (db_subscr_no_lookup) pending.