gdb 使用

2018年7月27日21:05:16 —— 多进程调试

1、follow_fork_mode

作用:在fork之后跟随父进程还是子进程

可以使用 show follow_fork_mode查看再fork之后跟随的是parent还是child,也可以通过

set follow_fork_mode parent/child来设置

2、detach_on_fork

作用:如果值 == on,则fork之后跟踪了父进程(子进程),就不调试子进程(父进程)了;否则fork之后父子进程都可以调试,并且可以通过 “info inferiors”查看所有进程,通过“inferior 进程编号”切换进程。

如果detach_on_fork == on,如果follow_fork_mode == parent,当程序fork之后,子进程会悬挂fork的地方,当切会子进程时,可以在子进程后续执行代码处下断,按c让子进程运行起来。

3、调试fork后的子进程执行exec后运行的新进程

在gdb xxx开始的时候,输入catch exec,这样在子进程运行到exec的地方时就可以断下来。怎样在exec执行的程序内部下断?比如execl(other_prog,…),那么可以输入b other_prog:main 来下断,然后按c继续运行。

如果gdb找不到other_prog的源码,需要确认两件事情:

1》生成other_prog的时候是否加上了 -g 这个编译选项,要加上的

2》可以通过directory xxx/yyy/ 来添加源文件搜索目录,其中other_prog.c要在目录xxx/yyy/下面,就是说要有 xxx/yyy/other_prog.c 存在。

2018年7月27日21:36:10 —— 打印完整字符串

show print elements 显示当前能打印出来的字符个数,一般是200个

set print elements 0 使得打印个数无限制

猜你喜欢

转载自www.cnblogs.com/longjmp/p/9784807.html
今日推荐