Mac环境配置gdb,调试golang程序

2019-08-29  本文已影响0人  随水而生_cb06

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' ' ')

上一篇 下一篇

猜你喜欢

热点阅读