gdb调试

安装

sudo apt install gdb -y

cat >>  ~/.bashrc << E
alias gdb='gdb -q'
E

cat >> ~/.gdbinit << E
set confirm off
E

基础命令

r:开始运行程序,直到断点; r xx xx传参;c继续,直到断点
n:单步调试,不会进入函数内部; s会进入函数内部
p:看变量或表达式的值,如 p name, p strlen(name);p a=5 改变变量值
b xx.cpp:6,给第6行打断点;i b :查看断点情况; d 1 删除断点号(i b查看)
fin:跳出函数; u:跳出循环
bt:查看堆栈,查看运行到哪一行
watch a: 设置观察点,当a发生变化,就打印,并停止运行;
i watchpoints:查看所有观察点;d 1:删除观察点
i locals:查看函数内所有变量值
tb:临时断点,命中一次就去除
ctrl+c:暂停程序
ptype i:查看i的类型
return -1: 结束后面的语句直接返回指定值
l: 查看代码

调试正在运行的程序

./a.out 启动程序
再开一个窗口:gdb a.out -p $(pgrep a.out)
程序就会暂停,bt查看堆栈看程序停在哪里

调试多进程

set follow-fork-mode [parent(默认)|child] 选择调试父进程/子进程
set detach-on-fork [on(默认)|off] 其他进程在调试期间运行/挂起
i inferiors 查看调试进程, inferiors 1 切换到1进程

调试多线程

i threads 查看所有线程, thread 2 切换到2线程
set scheduler-locking on(只运行调试的线程)|off

调试core文件

Core文件是的程序崩溃时内存状态dump出来的文件。可以理解是车祸现场的快照。
// ulimit -c unlimited
// sudo /sbin/sysctl -w kernel.core_pattern=./%e.core
//gdb a.out corexx

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值