NAIUI / C++工具和调试

Created Tue, 02 Jul 2024 06:12:46 -0700 Modified Tue, 02 Jul 2024 06:12:46 -0700
585 Words

C++工具和调试

1、gdb调试

strip命令:移除程序调试信息
O0~O4:编译器优化选项

1.1 gdb attach

调试已经运行的程序

1.2 detach

调试完程序后结束本次调试

1.3 backtraceframe

bt命令:查看当前的调用堆栈

f命令:切换堆栈

1.4 ptype

查看变量的类型

1.5 thread

切换当前线程

1.6 finishreturn

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)