无锡专业做网站的公司,网页设计实训报告总结3000字,网络服务器建设,wordpress安装网站源码文章目录 启动gdb运行程序设置断点运行控制查看源码查看信息查看变量线程相关 gdb调试常用功能如下#xff0c;其中bin为要调试的程序#xff0c;arg为参数 启动gdb
启动调试 gdb bin带参数启动 gdb --args bin arg1 arg2so预加载LD_PRELOAD/path/to/lib.so gdb … 文章目录 启动gdb运行程序设置断点运行控制查看源码查看信息查看变量线程相关 gdb调试常用功能如下其中bin为要调试的程序arg为参数 启动gdb
启动调试 gdb bin带参数启动 gdb --args bin arg1 arg2so预加载LD_PRELOAD/path/to/lib.so gdb bin
运行程序
r 开始运行程序r arg1 arg2以参数启动程序
设置断点
crtlC中断程序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和2d 删除所有断点dis 1 2 禁用断点 1和2en 1 2 启用断点 1和2en 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 上下按钮和滚轮用于查看代码ctrlL 刷新终端有时候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