今天折腾了下 Golang的调试工具gdb和lldb, 遇到了一些问题, 在这里记录下方便以后查找,也给遇到的小伙伴门一些参考。(只针对macOS系统)
生成证书报错
mac 创建证书 未知错误 = -2147414007
可以先生成一个登陆证书,然后将证书移动到系统那一类就行了
gdb 安装
gdb调试报错
Unable to find Mach task port for process-id 23330: (os/kern) failure (0x5).
(please check gdb is codesigned - see taskgated(8))
如果是 Mojave (10.14) 之前的系统
codesign -fs gdb-cert $(which gdb) #gdb-cert为证书名
如果是 Mojave (10.14) 之后的系统,先创建一个文件 gdb-entitlement.xml,内容为:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>com.apple.security.cs.debugger</key>
<true/>
</dict>
</plist>
</pre>
然后执行
codesign --entitlements gdb-entitlement.xml -fs gdb-cert $(which gdb)
gdb, lldb加断点报错
lldb 加断点报错
WARNING: Unable to resolve breakpoint to any actual locations.
gdb加断点报错
No symbol table is loaded. Use the "file" command.
打包时加上 -ldflags=-compressdwarf=false
参考资料:
https://stackoverflow.com/questions/52534287/debug-go-program-with-gdb-on-macos
https://sourceware.org/gdb/wiki/PermissionsDarwin
有疑问加站长微信联系(非本文作者)