centos学习笔记--gdb调试部分
2016-12-08 21:41
316 查看
=======================================================================
GDB调试部分
=======================================================================
-----
调试普通程序
------------------------------------
01.【gdb】:开启gdb
02.【file XXX】:载入文件XXX
03.【b main】:在main函数设置断点
04.【r】:运行程序
05.【s】:下一步,但不进入函数
06【b servluo】:设置新函数断点
07.【c】:中途设置完断点后,继续运行程序
08.【n】:下一步,但进入函数
09.【finish】:从函数中出来
10.【bt】:查看当前函数栈
11.【info args】:打印当前函数参数
12.【info locals】:打出当前函数所有地自动变量
13.【info catch】:打印当前地函数异常信息
14.【info registers】:查看寄存器情况
15.【info thread】:查看运行线程信息
16.【q】:退出调试
-----
调试多进程程序
-------------------------------------
01.【gdb】:开启gdb
02.【set follow-fork-mode child】:遇到fork,进入子进程
03.【set detch-on-fork on】:fork后,转移子进程后,关掉父进程
04.余下与普通进程调试一样
使用这种方法调试多进程的子进程时,强制q退出,因为父进程已被kill,子进程会成为僵死进程。需要用kill杀死,以免影响往后的调试
【###】其他调试多进程的方法
1.attach:没用过
2.wrapper(专用于fork+exec):没用过
【###】调试过程中遇到的其他问题
遇到进程阻塞在read的时候,就在其他终端开启程序,向该进程发送信息即可
-----
多线程程序
-----------------------------------------
01.gdb
02.file XXX
03.r
04.ctrl+\
05.thread apply all bt 打印所有线程的线程栈,查看是否有死锁
【###】其他命令
info thread 查看当前线程信息
thread pid 切换到线程pid调试
thread apply all command 让所有线程执行命令command
thread apply pid1 pid2 command 让线程pid1,pid2执行命令command
set scheduler-locking off | on | step
在使用step或continue命令调试当前被调试线程的时候,其他线程也是同时执行的,怎么只让被调试程序执行呢?通过这个命令就可以实现这个需求。
off 不锁定任何线程,也就是所有线程都执行,这是默认值。
on 只有当前被调试程序会执行。
------
内存泄漏检测
------------------------------------------------
valgrind --tool=memcheck -leak-check=full ./s 使用valgrind 的memcheck工具的 leak-check来检查是否有内存泄漏。
GDB调试部分
=======================================================================
-----
调试普通程序
------------------------------------
01.【gdb】:开启gdb
02.【file XXX】:载入文件XXX
03.【b main】:在main函数设置断点
04.【r】:运行程序
05.【s】:下一步,但不进入函数
06【b servluo】:设置新函数断点
07.【c】:中途设置完断点后,继续运行程序
08.【n】:下一步,但进入函数
09.【finish】:从函数中出来
10.【bt】:查看当前函数栈
11.【info args】:打印当前函数参数
12.【info locals】:打出当前函数所有地自动变量
13.【info catch】:打印当前地函数异常信息
14.【info registers】:查看寄存器情况
15.【info thread】:查看运行线程信息
16.【q】:退出调试
-----
调试多进程程序
-------------------------------------
01.【gdb】:开启gdb
02.【set follow-fork-mode child】:遇到fork,进入子进程
03.【set detch-on-fork on】:fork后,转移子进程后,关掉父进程
04.余下与普通进程调试一样
使用这种方法调试多进程的子进程时,强制q退出,因为父进程已被kill,子进程会成为僵死进程。需要用kill杀死,以免影响往后的调试
【###】其他调试多进程的方法
1.attach:没用过
2.wrapper(专用于fork+exec):没用过
【###】调试过程中遇到的其他问题
遇到进程阻塞在read的时候,就在其他终端开启程序,向该进程发送信息即可
-----
多线程程序
-----------------------------------------
01.gdb
02.file XXX
03.r
04.ctrl+\
05.thread apply all bt 打印所有线程的线程栈,查看是否有死锁
【###】其他命令
info thread 查看当前线程信息
thread pid 切换到线程pid调试
thread apply all command 让所有线程执行命令command
thread apply pid1 pid2 command 让线程pid1,pid2执行命令command
set scheduler-locking off | on | step
在使用step或continue命令调试当前被调试线程的时候,其他线程也是同时执行的,怎么只让被调试程序执行呢?通过这个命令就可以实现这个需求。
off 不锁定任何线程,也就是所有线程都执行,这是默认值。
on 只有当前被调试程序会执行。
------
内存泄漏检测
------------------------------------------------
valgrind --tool=memcheck -leak-check=full ./s 使用valgrind 的memcheck工具的 leak-check来检查是否有内存泄漏。
相关文章推荐
- gdb调试学习笔记
- centos学习笔记--VIM学习部分
- 【GDB调试学习笔记】调试逻辑错误
- GDB学习笔记(一):GDB的常用命令(部分)
- GDB调试工具学习笔记
- 【GDB调试学习笔记】 Makefie上
- GDB学习笔记(二)--调试段错误
- 【GDB调试学习笔记】Makefile生成多个可执行文件
- centos学习笔记--github初步使用部分
- centos学习笔记--软件安装部分
- 【GDB调试学习笔记】GDB查看运行时数据
- 手把手教你使用eclipse+qemu+gdb来单步调试ARM内核【学习笔记】
- 【GDB调试学习笔记】Makefile多级目录生成多个可执行文件
- GDB调试工具学习笔记
- 2012.3.1 linux学习笔记 GDB调试方法
- linux调试程序利器 GDB学习笔记
- 学习笔记 --- LINUX应用调试之使用GDB
- SRS学习笔记9-rtmp监听线程创建推流线程的过程分析-gdb调试
- Makefile管理工具与GDB调试工具学习笔记