【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.