如何在7个步骤中使用GDB在MacOS上调试Golang

我在Golang中的低级错误上遇到了一些麻烦,并且我不想使用LogFmt来打印变量来查找错误,因此我决定使用调试

通常,GDB或GNU Debugger用于调试C lang,但是我们也可以使用它来调试Golang,但是它具有一些棘手的配置。 我花了几个小时来面对多种错误,例如无法找到Mach任务端口runtime / gdb:gdb无法找到runtime-gdb.py和更多错误。 我终于可以做到了,所以不要惊慌,我会帮助您的,这样您就不会浪费很多时间

brew install gdb

将有2个gdb,一个位于/usr/local/bin/gdb另一个位于/usr/local/Cellar/gdb/{version}/bin/gdb ,我们将对其进行配置并将其转换为Golang调试器。

对我来说,它位于/usr/local/Cellar/gdb/8.0.1/bin/gdb您必须记住该字符串。 我已经将它命名gdbnew

将此行添加到您的.zshrc或.bash_profile或.bashrc中。 并且不要忘记更改您的版本或路径。

alias gdbnew='/usr/local/Cellar/gdb/{version}/bin/gdb'

 关闭启动外壳程序 
定义g
蟒蛇
导入子过程为p
cmd = [“ go”,“ env”,“ GOROOT”]
gdb_cmd =“来源%s / src / runtime / runtime-gdb.py”%p.check_output(cmd)[:-1]
gdb.execute(gdb_cmd)

警告:您应该检查该文件 /usr/local/opt/go/libexec/src/runtime/runtime-gdb.py
在您的机器上可能在
/usr/local/opt/go/libexec/src/pkg/runtime/runtime-gdb.py
如果是,请将.gdbinit编辑为正确的路径。

在终端输入此代码

  codesign -s gdb /usr/local/Cellar/gdb/{version}/bin/gdb 

同样,不要忘记更改版本或将其更改为正确的路径。

gdb参数是您的认证名称。 如果使用其他名称,请更改它。

就我而言

go build -o main -gcflags "-N"

然后调试

gdbnew main

尝试键入“ g”命令,这是我们在.gdbinit中定义的用户定义命令,应该说“ 加载Go运行时支持”。

现在我可以调试我的项目了

./main createblockchain -address

所以我在gdb中运行

run createblockchain -address

它就像一个魅力。

感谢您阅读我的文章,请随时关注我,以获取有关大数据,区块链和Golang的更多酷博客。