父子进程,在调试器实现过程中,跟踪父子进程和跟踪进程内的线程,实现技术上差别不大。

尽管大多数调试场景中,我们更加侧重于单进程内的多线程调试部分,但是为了系统性介绍调试的方方面面,我们还是希望简单讲一下多进程调试中涉及到的一些内容.

必要时还可以实现类似 gdb set follow-fork-mode=child/parent/ask 的调试效果呢

之前讲过跟踪新线程,其实这里设置下这个选项,就可以实现跟踪新进程创建了

opts := syscall.PTRACE_O_TRACEFORK | syscall.PTRACE_O_TRACEVFORK | syscall.PTRACE_O_TRACECLONE
if err := syscall.PtraceSetOptions(int(pid), opts); err != nil {
    fmt.Fprintf(os.Stderr, "set options fail: %v\n", err)
    os.Exit(1)
}

results matching ""

    No results matching ""