Skip to content

Commit

Permalink
Add a config option to enable the debug mode and redirect logging.
Browse files Browse the repository at this point in the history
  • Loading branch information
nsf committed Jan 27, 2015
1 parent c31c1e7 commit 8e75aff
Show file tree
Hide file tree
Showing 4 changed files with 42 additions and 26 deletions.
4 changes: 4 additions & 0 deletions README.md
Expand Up @@ -129,6 +129,10 @@ You can change all available options using `gocode set` command. The config file

A boolean option. If **true**, gocode will try to automatically build out-of-date packages when their source files are modified, in order to obtain the freshest autocomplete results for them. This feature is experimental. Default: **false**.

- *force-debug-output*

A string option. If is not empty, gocode will forcefully redirect the logging into that file. Also forces enabling of the debug mode on the server side. Default: "" (empty).

### Debugging

If something went wrong, the first thing you may want to do is manually start the gocode daemon with a debug mode enabled and in a separate terminal window. It will show you all the stack traces, panics if any and additional info about autocompletion requests. Shutdown the daemon if it was already started and run a new one explicitly with a debug mode enabled:
Expand Down
14 changes: 8 additions & 6 deletions config.go
Expand Up @@ -19,15 +19,17 @@ import (
//-------------------------------------------------------------------------

type config struct {
ProposeBuiltins bool `json:"propose-builtins"`
LibPath string `json:"lib-path"`
Autobuild bool `json:"autobuild"`
ProposeBuiltins bool `json:"propose-builtins"`
LibPath string `json:"lib-path"`
Autobuild bool `json:"autobuild"`
ForceDebugOutput string `json:"force-debug-output"`
}

var g_config = config{
ProposeBuiltins: false,
LibPath: "",
Autobuild: false,
ProposeBuiltins: false,
LibPath: "",
Autobuild: false,
ForceDebugOutput: "",
}

var g_string_to_bool = map[string]bool{
Expand Down
12 changes: 11 additions & 1 deletion server.go
@@ -1,6 +1,7 @@
package main

import (
"bytes"
"fmt"
"go/build"
"log"
Expand All @@ -9,11 +10,20 @@ import (
"os"
"reflect"
"runtime"
"bytes"
)

func do_server() int {
g_config.read()
if g_config.ForceDebugOutput != "" {
// forcefully enable debugging and redirect logging into the
// specified file
*g_debug = true
f, err := os.Create(g_config.ForceDebugOutput)
if err != nil {
panic(err)
}
log.SetOutput(f)
}

addr := *g_addr
if *g_sock == "unix" {
Expand Down
38 changes: 19 additions & 19 deletions utils.go
Expand Up @@ -3,14 +3,14 @@ package main
import (
"bytes"
"fmt"
"go/build"
"io/ioutil"
"os"
"path/filepath"
"runtime"
"strings"
"sync"
"unicode/utf8"
"go/build"
)

// returns truncated 'data' and amount of bytes skipped (for cursor pos adjustment)
Expand Down Expand Up @@ -149,30 +149,30 @@ type go_build_context struct {

func pack_build_context(ctx *build.Context) go_build_context {
return go_build_context{
GOARCH: ctx.GOARCH,
GOOS: ctx.GOOS,
GOROOT: ctx.GOROOT,
GOPATH: ctx.GOPATH,
CgoEnabled: ctx.CgoEnabled,
UseAllFiles: ctx.UseAllFiles,
Compiler: ctx.Compiler,
BuildTags: ctx.BuildTags,
ReleaseTags: ctx.ReleaseTags,
GOARCH: ctx.GOARCH,
GOOS: ctx.GOOS,
GOROOT: ctx.GOROOT,
GOPATH: ctx.GOPATH,
CgoEnabled: ctx.CgoEnabled,
UseAllFiles: ctx.UseAllFiles,
Compiler: ctx.Compiler,
BuildTags: ctx.BuildTags,
ReleaseTags: ctx.ReleaseTags,
InstallSuffix: ctx.InstallSuffix,
}
}

func unpack_build_context(ctx *go_build_context) build.Context {
return build.Context{
GOARCH: ctx.GOARCH,
GOOS: ctx.GOOS,
GOROOT: ctx.GOROOT,
GOPATH: ctx.GOPATH,
CgoEnabled: ctx.CgoEnabled,
UseAllFiles: ctx.UseAllFiles,
Compiler: ctx.Compiler,
BuildTags: ctx.BuildTags,
ReleaseTags: ctx.ReleaseTags,
GOARCH: ctx.GOARCH,
GOOS: ctx.GOOS,
GOROOT: ctx.GOROOT,
GOPATH: ctx.GOPATH,
CgoEnabled: ctx.CgoEnabled,
UseAllFiles: ctx.UseAllFiles,
Compiler: ctx.Compiler,
BuildTags: ctx.BuildTags,
ReleaseTags: ctx.ReleaseTags,
InstallSuffix: ctx.InstallSuffix,
}
}

0 comments on commit 8e75aff

Please sign in to comment.