我在Golang中的低级错误上遇到了一些麻烦,并且我不想使用Log或Fmt来打印变量来查找错误,因此我决定使用调试器
通常,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的更多酷博客。