我编译了一个带有调试标志的简单 go 应用程序:
go build -gcflags "-N -l" -o main main.go
主程序
package main
import (
"fmt"
"time"
)
func main() {
for i := 0; true; i++ {
fmt.Println("number:", i)
time.Sleep(time.Second)
}
}
Run Code Online (Sandbox Code Playgroud)
在 gdb 中,我附加到它pid并执行了breakand break 11。
gdb --pid=<pid>
Gdb 报告断点已成功设置,但从未命中。有办法让它发挥作用吗?
注意:相同的设置(即使将您的添加runtime-gdb.py到您的.gdbrc)也有无法在 Ubuntu 13.10 上运行的风险,您会收到一条“ SyntaxError”消息,如下所示:
schmichael问题是 Ubuntu 13.10 将 GDB 与 Python 3.3 链接起来,而 golang 脚本是针对 Python 2 的。有人已经提交了一个问题,并且它似乎已在上游修复(所以预计 Go 1.3 可以正常工作)。
幸运的是,向后移植修复很容易。只需将您的现有版本移开
runtime-gdb.py并下载上游版本即可。如果您
$GOROOT是/usr/local/go以下内容应该可以工作:
sudo mv /usr/local/go/src/pkg/runtime/runtime-gdb.py /usr/local/go/src/pkg/runtime/runtime-gdb.py.orig
cd /usr/local/go/src/pkg/runtime/
sudo wget https://go.googlecode.com/hg/src/pkg/runtime/runtime-gdb.py
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1592 次 |
| 最近记录: |