title: How to debug geth with goland?
body: <p>I would like to be able to debug through Geth&#39;s Go code - using Goland.</p>
  
  <p>It looks to me as if the entry point for Geth is main.go, however, when I try to run this I get the following errors:</p>
  
  <pre><code>GOROOT=/usr/local/Cellar/go/1.11/libexec #gosetup
  GOPATH=/Users/codet/go #gosetup
  /usr/local/Cellar/go/1.11/libexec/bin/go build -o /private/var/folders/6t/tdn_s_2x2rx1scn774cwvlph0000gn/T/___geth_go -gcflags "all=-N -l" /Users/codet/go/src/github.com/ethereum/go-ethereum/cmd/geth/main.go #gosetup
  # command-line-arguments
  cmd/geth/main.go:136:3: undefined: configFileFlag
  cmd/geth/main.go:177:3: undefined: initCommand
  cmd/geth/main.go:178:3: undefined: importCommand
  cmd/geth/main.go:179:3: undefined: exportCommand
  cmd/geth/main.go:180:3: undefined: importPreimagesCommand
  cmd/geth/main.go:181:3: undefined: exportPreimagesCommand
  cmd/geth/main.go:182:3: undefined: copydbCommand
  cmd/geth/main.go:183:3: undefined: removedbCommand
  cmd/geth/main.go:184:3: undefined: dumpCommand
  cmd/geth/main.go:186:3: undefined: monitorCommand
  cmd/geth/main.go:186:3: too many errors
  
  Compilation finished with exit code 2
  </code></pre>
  
  <p>I add debug point to function main, but it didn&#39;t work.</p>
  
  <pre><code>func main() {
      if err := app.Run(os.Args); err != nil {
          fmt.Fprintln(os.Stderr, err)
          os.Exit(1)
      }
  }
  </code></pre>