go-delve / delve

Delve is a debugger for the Go programming language.
MIT License
22.91k stars 2.14k forks source link

Support android operating system #2269

Open kcubeterm opened 3 years ago

kcubeterm commented 3 years ago
  1. What version of Delve are you using (dlv version)?

    $ dlv version
    Delve Debugger
    Version: 1.5.1
    Build: $Id: bca418ea7ae2a4dcda985e623625da727d4525b5 $
  2. What version of Go are you using? (go version)?

    $ go version
    go version go1.15.5 android/arm64
  3. What operating system and processor architecture are you using? OS: Android pie Arch: aarch64

  4. What did you do? Official golang hello example.

    
    dlv debug ./hello
    panic: attempting to open file Delve cannot parse

goroutine 1 [running]: github.com/go-delve/delve/service/debugger.verifyBinaryFormat(0x400003a1e0, 0x4d, 0x0, 0x0) /data/data/com.termux/files/home/go/src/github.com/go-delve/delve/service/debugger/debugger_unix.go:36 +0x120 github.com/go-delve/delve/service/debugger.(Debugger).Launch(0x4000200a80, 0x40000745c0, 0x1, 0x1, 0x55a26d906d, 0x1, 0x1, 0x55a2241024, 0x73304145c0) /data/data/com.termux/files/home/go/src/github.com/go-delve/delve/service/debugger/debugger.go:225 +0x40 github.com/go-delve/delve/service/debugger.New(0x4000254000, 0x40000745c0, 0x1, 0x1, 0x0, 0x0, 0x0) /data/data/com.termux/files/home/go/src/github.com/go-delve/delve/service/debugger/debugger.go:176 +0x464 github.com/go-delve/delve/service/rpccommon.(ServerImpl).Run(0x40002009c0, 0x40002009c0, 0x40002285a0) /data/data/com.termux/files/home/go/src/github.com/go-delve/delve/service/rpccommon/server.go:112 +0xa8 github.com/go-delve/delve/cmd/dlv/cmds.execute(0x0, 0x40000745c0, 0x1, 0x1, 0x4000221f80, 0x0, 0x0, 0x1, 0x4000074550, 0x1, ...) /data/data/com.termux/files/home/go/src/github.com/go-delve/delve/cmd/dlv/cmds/commands.go:856 +0x620 github.com/go-delve/delve/cmd/dlv/cmds.debugCmd.func1(0x4000218fc0, 0x4000074550, 0x1, 0x1, 0x0) /data/data/com.termux/files/home/go/src/github.com/go-delve/delve/cmd/dlv/cmds/commands.go:473 +0x330 github.com/go-delve/delve/cmd/dlv/cmds.debugCmd(0x4000218fc0, 0x4000074550, 0x1, 0x1) /data/data/com.termux/files/home/go/src/github.com/go-delve/delve/cmd/dlv/cmds/commands.go:474 +0x38 github.com/go-delve/delve/vendor/github.com/spf13/cobra.(Command).execute(0x4000218fc0, 0x4000074510, 0x1, 0x1, 0x4000218fc0, 0x4000074510) /data/data/com.termux/files/home/go/src/github.com/go-delve/delve/vendor/github.com/spf13/cobra/command.go:647 +0x17c github.com/go-delve/delve/vendor/github.com/spf13/cobra.(Command).ExecuteC(0x40002186c0, 0x40002186c0, 0x55a26dc582, 0x6) /data/data/com.termux/files/home/go/src/github.com/go-delve/delve/vendor/github.com/spf13/cobra/command.go:733 +0x1f8 github.com/go-delve/delve/vendor/github.com/spf13/cobra.(*Command).Execute(...) /data/data/com.termux/files/home/go/src/github.com/go-delve/delve/vendor/github.com/spf13/cobra/command.go:692 main.main() /data/data/com.termux/files/home/go/src/github.com/go-delve/delve/cmd/dlv/main.go:24 +0xb8

derekparker commented 3 years ago

IIUC Android just ends up running elf binaries anyways, this may be as simple as modifying verifyBinaryFormat to check for "android" in the switch checking runtime.GOOS.

kcubeterm commented 3 years ago

Adding "android" in switch fix error for now. https://github.com/go-delve/delve/blob/master/service/debugger/debugger_unix.go

switch runtime.GOOS {
        case "darwin":
                _, err = macho.NewFile(f)
        case "linux", "freebsd","android": //android added
                _, err = elf.NewFile(f)
        default:
                panic("attempting to open file Delve cannot parse")
        }
        if err != nil {
                return api.ErrNotExecutable
        }
        return nil
kcubeterm commented 3 years ago

@derekparker Why delve have no support for android platform officially. Android is quite similar to linux and it requires few more lines of code to work on android.

aarzilli commented 3 years ago

Why delve have no support for android platform officially. Android is quite similar to linux and it requires few more lines of code to work on android.

Nobody wrote those, and also CI availability.

derekparker commented 3 years ago

@kcubeterm feel free to submit a PR with Delve working on Android. Due to the lack of CI for it, it will mostly always be "best effort" to support it.

kcubeterm commented 3 years ago

I added Delve in termux repo and it works as expected. Didn't checked all features and subcommand yet. Leaving it on user. If user reports error. will try to fix it and submit PRs for sure if possible.

Umsemana commented 2 years ago

Oi

bigfish1913 commented 5 months ago

Why is it not supported now?