用gdb或cgdbdebuggingdocker deamon

我一直在尝试debugging,并在主机操作系统(ubuntu 14.04 OS)上运行的Ubuntu 14.04容器上使用gdbcgdb进入cgdb守护进程代码。 在构build容器中的debugging二进制文件时,我使用了-O0 -g标志。

在容器中使用的版本:

 # go version go version go1.4.3 linux/amd64 

我无法通过使用cgdb的代码:

 <http://www.gnu.org/software/gdb/documentation/>. For help, type "help". Type "apropos word" to search for commands related to "word"... Reading symbols from bundles/1.9.0-dev/dynbinary/docker...done. ( gdb) b main.handleGlobalDaemonFlag Breakpoint 1 at 0x497b30 (gdb) r daemon -D Starting program: /go/src/github.com/docker/docker/bundles/1.9.0-dev/dynbinary/docker daemon -D [Thread debugging using libthread_db enabled] Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1". [New Thread 0x7ffff5a00700 (LWP 2775)] [New Thread 0x7ffff51ff700 (LWP 2776)] [New Thread 0x7ffff49fe700 (LWP 2777)] Breakpoint 1, 0x0000000000497b30 in main.handleGlobalDaemonFlag () (gdb) n Single stepping until exit from function main.handleGlobalDaemonFlag, which has no line number information. Breakpoint 1, 0x0000000000497b30 in main.handleGlobalDaemonFlag () (gdb) l 1 in /tmp/go-build212795923/github.com/docker/docker/pkg/term/_obj/_cgo_export.c (gdb) 

如何确认构build的二进制文件是否被debugging? 我可以使用工具readelf通过标题来读取以确认这一点吗?

我应该设置一个GOPATH或GOROOT到一个特定的目录吗?

 root@6511af5b06c1:/go/src/github.com/docker/docker# echo $GOROOT root@6511af5b06c1:/go/src/github.com/docker/docker# echo $GOPATH /go:/go/src/github.com/docker/docker/vendor 

在我的环境中是否还有其他依赖关系?