C++工具和调试
1、gdb调试
strip命令:移除程序调试信息
O0~O4:编译器优化选项
1.1 gdb attach
调试已经运行的程序
1.2 detach
调试完程序后结束本次调试
1.3 backtrace
和frame
bt命令:查看当前的调用堆栈
f命令:切换堆栈
1.4 ptype
查看变量的类型
1.5 thread
切换当前线程
1.6 finish
和return
finish
:执行完当前函数并返回上一层调用处
return
:立即从函数的当前位置结束并返回到上层调用中
1.7 until
让程序运行到指定的行停下来
1.8 disassemble
输出当前函数的汇编指令
1.9 watch
监视一个变量或者一段内存,当这个变量或者该内存处的值发生变化时,gdb就会中断。监视某个变量或者某个内存地址会产生一个观察点
1.10 display
监视变量或者内存的值,每次 gdb 中断,都会自动输出这些被监视变量或内存的值
1.11 dir
重新定位源文件的位置
1.12 scheduler-locking
set scheduler-locking on/step/off
on:锁定当前线程,只观察这个线程的运行情况,锁定这个线程时,其他线程处于暂停状态
step:用来锁定当前线程,当且仅当使用next或step命令做单步调试时会锁定当前线程,如果使用 until、finish、return等线程内的调试命令(它们不是单步控制命令),则其他线程还是有机会运行的。
off:释放锁定当前线程
1.13 follow-fork
通过set follow-fork mode设置一个进程fork出新的子进程时,gdb是继续调试父进程(取值是parent)还是继续调试子进程(取值是child),默认继续调试父进程(取值是parent)