gdb常用指令
| 命令 | 缩写 | 说明 |
|---|---|---|
| quit | q | 退出gdb模式 |
| detach | 分离(程序还会继续运行) | |
| run | r | 运行程序 |
| list | l | 查看源代码 |
| next | n | 下一行 |
| break | b | 打断点 b main.cpp:10 在main.cpp第十行设置断点 b main.cpp:class::print 设置函数断点 b main.cpp:10 if i == 10条件断点,只有条件满足才击中断点 |
| info b | i b | 查看断点情况 |
| delete num | d | 通过num删除断点(i b查看) |
| p | 打印 | |
| ptype | ptype | 打印变量类型 |
| jump | j | 将当前程序执行流跳转到指定行或地址 |
| continiu | c | 继续程序的运行 |
| step | s | 进入某一个具体的函数(单步进入) |
| until | u | 当你厌倦了在一个循环体内单步跟踪时,单纯使用 until 命令,可以运行程序直到退出循环体。 until n 命令中,n 为某一行代码的行号,该命令会使程序运行至第 n 行代码处停止。 |
| finish | fi | 结束当前正在执行的函数,并在跳出函数后暂停程序的执行。(单步跳出) |
| return | 结束当前调用函数并返回指定值,到上一层函数调用处停止程序执行。(剩下的代码不会执行,直接返回值并返回调用处) | |
| bt | 显示程序堆栈 | |
| watch | 监视某一个变量或内存地址的值是否发生变化 | |
| display | 监视的变量或者内存地址,当程序中断后自动输出监控的变量或内存地址 | |
| dir | 重定向源码文件的位置 | |
| ------------------------- | ----- | -------------------------------------------------------------------------------------------------------------------------------------- |
| info threads | 查看程序的线程信息 | |
| set logging on | 设置日志功能 | |
| set varname=v | 设置变量的值, | |
| set args | 设置主程序的参数。 | |
| disassemble | 查看汇编代码(/m源码和汇编一起排列)() | |
| rb xxx | 可以将所有带有xxx字符的函数都设置断点 | |
| tb xxx | 设置临时断点(只会击中一次) | |
| disable/enable num | 通过num禁用和启用断点 | |
| examine | x | x/size option(f/x/d/u/o/t/a/c) addr 查看内存数据 |
| info registers xxx | i r | Linux x64前6个整数或指针参数在寄存器RDI,RSI,RDX,RCX,R8,R9中传递 |
- 系统默认不会生成core文件,需要自行设置系统文件.
- 在使用gcc/g++编译时,添加参数-g,生成debug版本,如:g++ -g test.c
- gdb有很多内嵌函数,例如:sizeof\strlen\strcpy\strcmp
- set disassembly-flavor intel设置英特尔格式汇编
- set print null-step 打印字符串时遇见\0就不会继续打印了
- set print pretty 漂亮的显示,比较清晰易看,一行一个变量
- set print array on 让数组一行一个的显示
启动程序并传入参数:
1. gdb --args a.out var1 var2 var3
1. gdb a.out,先启动可执行程序,然后通过set设置变量的值,例:set args var1 var2 var3
1. gdb a.out,在run后面传入参数.例:r var1 var2 var3
附加到进程:
1. gdb attach <process pid>
2. gdb --pid <process pid>
条件断点
1. (gdb) break line_number if i==5000
2万+

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



