debugging - GDB无法在cgo代码中调试go程序

标签 debugging gdb go cgo

示例文件

src/test.go

package main
import (
  . "clib"
)
func main() {
  a := "123";
  b := "456";
  c := "789";
  println(a,b,c);
  Output("ABC");
}

src/clib/clib.h

#ifndef CLIB
void output(char* str);
#endif

src/clib/clib.c

#include "clib.h"
#include <stdio.h>
void output(char* str)
{
    printf("%s\n", str);
}

src/clib/clib.go

package clib
/*
#cgo CFLAGS:-g
#include "clib.h"
*/
import "C"
func Output(s string) {
  p := C.CString(s);
  C.output(p);
}

执行代码

go build -gcflags "-N -l" test.go
gdb ./test
b 10
r
info locals  // <- every variable's value is wrong!

谁能帮我解决这个问题,非常感谢。

我的环境:

  • ubuntu 11.04 i386
  • gdb 7.6
  • 转到1.1

最佳答案

目前存在一个与此相关的未解决错误:https://code.google.com/p/go/issues/detail?id=5221

使用 gdb 调试 cgo 在 1.0 中可以工作,但目前在 1.1 中被破坏。正在处理中。

关于debugging - GDB无法在cgo代码中调试go程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17148279/

相关文章:

java - 配置 eclipse 调试器以过滤掉我在导航堆栈时没有编写的库方法?

debugging - 在摩托罗拉 Droid 上调试 native 代码

c++ - GDB Backtrace 不使用 cmake 显示函数名称

gdb - 监控linux动态库

go - 在 Go 中递归创建目录的最惯用的方法是什么?

sql - 在 Go 数据库/sql 包中查看带参数的查询

.net - 缺少 pdb 文件

debugging - 如何判断哪个任务死了?

go - 在新包中使用标志值

ios - 无法在ios模拟器中调试