网站服务器在哪可以看ppt做的好的有哪些网站有哪些
文章目录
- 启动gdb
 - 运行程序
 - 设置断点
 - 运行控制
 - 查看源码
 - 查看信息
 - 查看变量
 - 线程相关
 
gdb调试常用功能如下,其中bin为要调试的程序,arg为参数
启动gdb
- 启动调试 gdb bin
 - 带参数启动 gdb --args bin arg1 arg2
 - so预加载LD_PRELOAD=/path/to/lib.so && gdb bin
 
运行程序
- r 开始运行程序
 - r arg1 arg2以参数启动程序
 
设置断点
- crtl+C中断程序
 - b file.cpp:123 设置断点在file的123行
 - b main 设置断点在main函数
 - b ClassA::func 设置断点在类方法
 - b file.cpp:123 if n > 0 当n大于0时在该处停下
 - watch *(&(this->m_data)) 当m_data发生变化时,停止程序
 - watch *((bool*)0x5c16450) 当地址处sizeof(bool)大小的数据发生变化时,停止程序
 - watch *(T (*)[N])0x5c12345 当地址处开始的大小为N*sizeof(T)的数据发生变化时,停止程序,如果N太大似乎gdb会严重拖慢程序的运行速度
 - d 1 2 删除断点 1和2
 - d 删除所有断点
 - dis 1 2 禁用断点 1和2
 - en 1 2 启用断点 1和2
 - en b 启用所有断点
 
运行控制
- unitll 123 运行到当前文件123行
 - s 单步调试
 - n 执行到下一行
 - fin 结束当前函数栈,up以后fin,会送当前查看的调用栈结束
 - ret 直接返回,不执行当前函数栈剩余代码
 - j 123直接跳转到代码的123行,不恰当的jump可能导致崩溃
 
查看源码
- list 查看源码
 - list - 向上查看源码
 - list file.cpp:123 查看指定文件指定行数
 - list func 查看函数定义
 - tui en/tui dis 用terminal ui的方式查看代码 
- focus cmd上下按钮和滚轮用于切换命令
 - focus src 上下按钮和滚轮用于查看代码
 - ctrl+L 刷新终端,有时候tui更新不够好乱码可以刷新下一下
 
 
查看信息
- i b(info break) 查看断点信息
 - show args 查看当前运行参数
 - up/down 查看调用栈上一层和下一层
 - bt 查看完整调用栈
 
查看变量
- p var 查看变量
 - p &var 查看类型和地址
 - p arr[0]@10 查看数组0位置开始的10个元素
 - p a = b 执行代码,如赋值篡改变量,函数调用等等都可以
 - disp expr。自动打印变量,expr可以是上面这些内容,到相应断点处或者每次执行n时就打印一次expr,不恰当的disp可能导致崩溃。disp还可以用于赋值
 
线程相关
- i threads 查看所有线程
 - show scheduler-locking查看当前线程调试模式
 - set scheduler-locking on 只运行当前线程
 - set scheduler-locking off 运行所有线程
 
参考:1. https://www.cnblogs.com/pugang/p/7698772.html
