GDB:The GNU Project Debugger
GDB是GNU中的项目调试工具,主要运用在UNIX及UNIX-like环境。
功能:可以调试、定位问题到代码行
备注:由于macOS系统本身和UNIX系统有区别,且本质上并不支持gdb,故安装过程会遇到各种问题
1、如何安装:
1)我直接brew install gdb会失败,错误信息忘记保存了
2)选用下载安装包方式
下载链接:ftp://sourceware.org/pub/gdb/releases/
选择其中一个版本下载
3)下载后,解压,并进入下载目录
配置:./configure
编译:make -j4
安装:make install
4)安装成功,执行gdb -v,可以看到gdb版本
gdb -v
GNU gdb (GDB) 8.3
Copyright (C) 2019 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
2、安装证书
1)在application里找到钥匙串访问:
2)选择钥匙串访问-》证书助理-》创建证书
3)按如下操作:证书名为:gdb_codesign
4)一直继续直到完成,完成后,会看到证书,选中右键,选择显示简介:
点开其中的信任:
设置下面两个选项
使用此证书:选择使用系统默认
代码签名:选择始终信任
5)打开终端,验证证书
需要重启系统,然后在终端执行:codesign -s gdb_codesign $(which gdb)
问题:如果证书设置错误,但是又已经验证了,使用过程有问题怎么办?
可以重新编译安装gdb,重新去gdb的安装目录执行 编译:make -j4 安装:make install
然后再重新验证证书即可
3、gdb调试
1)mac中使用gdb需要root权限,所以需要sudo gdb 可执行文件,但是每次都得输入密码
可以设置mac中使用root不输入密码:
Mac/Ubuntu/Linux 配置sudo免密码:
a.打开命令窗口输入如下命令:
1sudo visudo 或者 sudo vi /etc/sudoers
b.注释 #%admin ALL=(ALL) ALL ,改为 %admin ALL=(ALL) NOPASSWD: NOPASSWD: ALL
2)开始调试 sudo gdb 可执行文件
打断点方式:
代码行:b service-customer-list/services/rules/do.go:776
函数:b service-customer-list/services/rules/do.go:函数名
打断点后可以按c让程序运行起来,直到遇到第一个断点
调试节奏:
单步调试:运行到下一行,用next或n
断点调试:运行到下个断点用 continue或c
直接运行完,则用run或r
在断点处:
如果要查看当前代码:则可以用list
查看当前局部变量:info locals
打印某个变量:print 变量名
3)使用过程中问题
如果开启gdb,用ctrl+z退出后其实进程还在,需要杀死,否则重新gdb run的时候会失败
杀死所有名称为gdb的进程命令:kill -9 $(ps -ef|grep gdb |awk '$0 !~/grep/ {print $2}' |tr -s '\n' ' ')