main.go 877 字节
Newer Older
D
Derek Parker 已提交
1 2 3
package main

import (
4
	"flag"
D
Derek Parker 已提交
5 6
	"fmt"
	"os"
7
	"runtime"
D
Derek Parker 已提交
8

9
	"github.com/derekparker/delve/client/cli"
D
Derek Parker 已提交
10 11
)

D
Derek Parker 已提交
12
const version string = "0.3.2.beta"
D
Derek Parker 已提交
13

D
Derek Parker 已提交
14
func init() {
15 16
	// We must ensure here that we are running on the same thread during
	// the execution of dbg. This is due to the fact that ptrace(2) expects
D
Derek Parker 已提交
17
	// all commands after PTRACE_ATTACH to come from the same thread.
18
	runtime.LockOSThread()
D
Derek Parker 已提交
19
}
20

D
Derek Parker 已提交
21
func main() {
22
	var (
D
Derek Parker 已提交
23 24 25
		pid    int
		run    bool
		printv bool
26
	)
D
Derek Parker 已提交
27

28
	flag.IntVar(&pid, "pid", 0, "Pid of running process to attach to.")
29
	flag.BoolVar(&run, "run", false, "Compile program and begin debug session.")
D
Derek Parker 已提交
30
	flag.BoolVar(&printv, "v", false, "Print version number and exit.")
31
	flag.Parse()
D
Derek Parker 已提交
32

33
	if flag.NFlag() == 0 && len(flag.Args()) == 0 {
34 35
		flag.Usage()
		os.Exit(0)
D
Derek Parker 已提交
36 37
	}

D
Derek Parker 已提交
38 39 40 41 42
	if printv {
		fmt.Printf("Delve version: %s\n", version)
		os.Exit(0)
	}

43
	cli.Run(run, pid, flag.Args())
D
Derek Parker 已提交
44
}