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

随水而生_cb06 · · 886 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

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


有疑问加站长微信联系(非本文作者)

本文来自:简书

感谢作者:随水而生_cb06

查看原文:Mac环境配置gdb,调试golang程序

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

886 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传