0. GDB常用命令
http://t.csdn.cn/zSWfV
1. core_dump
生成条件:程序异常终止且ulimit -c 参数不为0
永久生效:/etc/security/limits.conf 添加: * soft core unlimited
生成路径:
临时–>sudo sysctl -w kernel.core_pattern=/coredumps/core-%e-%s-%u-%g-%p-%t
永久–>/etc/sysctl.conf 添加:kernel.core_pattern=“/coredumps/core-%e-%s-%u-%g-%p-%t”
2. gdb调试core_dump文件
gdb [二进制运行程序] [core_dump文件]
bt:查看运行堆栈,找到报错行
3. gdb调试正在运行的程序
gdb [二进制运行程序] -p pid 注:调试时,运行程序将停在当前运行位置
4. gdb调试多进程程序
调试父进程: set follow-fork-mode parent (缺省)
调试子进程: set follow-fork-mode child
设置调试模式:set detach-on-fork [on|off] (缺省为on)
含义:当调试当前进程是,其他进程是否继续运行
查看调试的进程:info inferiors
切换调试的进程:inferiors pid
5. gdb调试多线程程序
shell命令:
1. 查看运行进程:ps aux | grep name
2. 查看运行线程:ps -aL | grep name
查看调试的线程: info threads
切换调试的线程:thread id
运行当前线程:set scheduler-locking on
运行全部线程:set scheduler-locking off
指定某个线程执行gdb命令:thread apply 线程id cmd
指定全部线程执行gdb命令:thread apply all cmd
6. gdb监视变量
info watchpoints:列出当前所设置了的所有观察点
watch <表达式>:表达式发生变化时暂停运行
awatch <表达式>:表达式被访问、改变是暂停执行
rwatch <表达式>:表达式被访问时暂停执行
本文介绍了GDB调试工具的使用,包括如何生成和调试core dump文件,以及如何调试多进程和多线程程序。在调试core dump时,讲解了`kernel.core_pattern`配置和`gdb`的`bt`命令。对于多进程调试,提到了`set follow-fork-mode`的用法。在多线程调试方面,阐述了如何查看和切换线程,以及设置调度锁定。此外,还提及了监视变量变化的`watch`、`awatch`和`rwatch`命令。
6082

被折叠的 条评论
为什么被折叠?



