doujuanju3076 2013-05-06 14:53 采纳率: 0%
浏览 71

在GDB中打印复杂的Go结构

I need some help in using GDB + Python extensions for Go.

The struct LogQuery I am trying to look into is composed as follows:

   LogQuery (struct)
     CommonCmd (struct)
         Context (struct)
            out
            Globs
         flagHelp
         ...
      flagLog
      ...


Breakpoint 3, acme/subcmds.CmdObj (context=..., cmdName="log_query", noname=
    void) at /nobackup/git/goacme/src/acme/subcmds/cmder.go:32
32   cmd = NewLogQuery(context) //debugger
(gdb) s
acme/subcmds.NewLogQuery (context=..., noname=void)
    at /nobackup/git/goacme/src/acme/subcmds/log_query.go:29
29  func NewLogQuery(context context.Context) LogQuery {
(gdb) n
30   obj := LogQuery{NewCommonCmd(context), "", "", "", "", 0, "", ""}
(gdb) 
31   return obj

1 - printing the object (obj) inside the constructor works. But how do I see 'obj.Globs'?

(gdb) p obj
$8 = {acme/subcmds.CommonCmd = {acme/context.Context = {out = 0, Globs = 
    0xf840050140}, FlagArgs = "", flagDebug = "", flagHelp = false, 
    flagOutput = "", flagVerbose = false, CmdName = "", debug = 0x0}, 
  flagColl = "", flagData = "", flagDb = "", flagHost = "", flagLimit = 0, 
  flagLog = "", flagQuery = ""}

Returning to the caller

(gdb) n
acme/subcmds.CmdObj (context=..., cmdName="log_query", noname=void)
    at /nobackup/git/goacme/src/acme/subcmds/cmder.go:40
40   if cmdName == "acme" {

Here I see the type of the object, but can't seem to be able the see anything in it

(gdb) p cmd
$9 = "(subcmds.LogQuery)0xf840052b60"

(gdb) p $dtype(cmd)
$2 = (struct cmds.Add *) 0xf840034210

(gdb) p cmd->Globs
A syntax error in expression, near `>Globs'.

(gdb) p cmd.Globs
There is no member named Globs.
  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥100 set_link_state
    • ¥15 虚幻5 UE美术毛发渲染
    • ¥15 CVRP 图论 物流运输优化
    • ¥15 Tableau online 嵌入ppt失败
    • ¥100 支付宝网页转账系统不识别账号
    • ¥15 基于单片机的靶位控制系统
    • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
    • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
    • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
    • ¥15 手机接入宽带网线,如何释放宽带全部速度