Golang syscall获取syscall的参数

If you execute ./syscallprint ls -l it will print syscall ID's being called by ls -l command.

syscallprint.go

package main

import (
    "fmt"
    "os"
    "os/exec"
    "syscall"
)

func main() {
    var regs syscall.PtraceRegs
    cmd := exec.Command(os.Args[1], os.Args[2:]...)
    cmd.Stderr = os.Stderr
    cmd.Stdin = os.Stdin
    cmd.Stdout = os.Stdout
    cmd.SysProcAttr = &syscall.SysProcAttr{
        Ptrace: true,
    }
    cmd.Start()
    err := cmd.Wait()
    if err != nil {
        fmt.Printf("Wait returned: %v
", err)
    }
    pid := cmd.Process.Pid
    exit := true
    for {
        if exit {
            err = syscall.PtraceGetRegs(pid, &regs)
            if err != nil {
                break
            }
            fmt.Printf("SystemId: (%x)
", regs.Orig_rax)
            // TODO: print syscall parameters
        }
        err = syscall.PtraceSyscall(pid, 0)
        if err != nil {
            panic(err)
        }
        _, err = syscall.Wait4(pid, nil, 0, nil)
        if err != nil {
            panic(err)
        }
        exit = !exit
    }
}

Is it possible to get parameters of syscall being made by ls -l?

It seems to be possible with from this question. Is it possible with go-lang?