gdb调试关键点记录
1.使用gcc时,需要使用gcc -g选项
2.如果想要把生成的可执行文件的调试信息去掉,可以使用strip命令.
3.调试程序时,最好把编译器的优化给关掉
gdb调试程序的三种方式:
1.gdb filename
2.gdb attach pid # 分离可以用detach
3.gdb filename corename
gdb常用的命令:
| 命令(简写) | 含义 | 
| help command | 救命啊,命令 | 
| list(l) | 列出附近的代码,l -表示前面的. | 
| break(b) | 打断点 b funcname b LineNo b filename:LineNo | 
| run(r) | 运行 | 
| continue(c) | 运行到下一个断点处 | 
| print(p) | 打印, 可以查看错误p strerror(errorno) 也可以用来修改变量,比如p a = 3. 也可以计算表达式, p 1+2 | 
| ptype | 打印类型,也可以打印结构体内容 | 
| info thread | 打印线程的信息 切换用thread + 线程序号 | 
| info args | 打印参数信息 | 
| backtrace(bt) | 调用堆栈,可以使用 f 堆栈号 来切换 | 
| frame(f) | 切换到某个堆栈 | 
| info break(info b) | 查看断点信息 | 
| enable | +断点编号(可以多个):表示对某个起作用; 不加表示对所有起作用 | 
| disable | |
| delete | |
| next(n) | 单步步过 | 
| step(s) | 单步步入 | 
| util | util LineNo 执行到某行 | 
| jump(j) | j LineNo或者函数地址 跳转到某处 | 
| finish | 执行完当前层函数,返回到上一层 | 
| return | 当前层函数后面的直接不执行,返回到上一层.可以带返回值,返回值会赋给函数调用方. | 
| disassemble | 反汇编, set disassembly-flavor intel 可以设置为intel风格,就是VS下的那种风格 | 
| tb | 临时断点,只第一次起作用 | 
| set args | 设置参数 | 
| watch | watch监视变量,当变量发生变化时就会自动中断,很神奇是不是~ 删除watch的方式: 先info watch,然后删除对应的编号. | 
| display | 显示你添加进去的变量,每一次中断的位置都会显示 | 
    新战场:https://blog.csdn.net/Stephen___Qin
 
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号