linux 是否提供任何 DEBUG api,如 windows?

Does linux provide any DEBUG api, like windows?

Windows提供了一套DebugAPI的让程序可以停在某个位置并转储相应的信息,编写我们自己的调试器等,如Using DebugActiveProcess and WaitForDebugEvent seems to hang

我的问题是,linux是否也提供了这样一系列的调试api,让我们可以轻松编写自己的调试器,或者扩展gdb,而不必学习[=21] =] 内核等?

ptrace() user-space API 在 Linux(和一些 Unix)中实现调试器(gdb)或跟踪器(strace): * Linux http://man7.org/linux/man-pages/man2/ptrace.2.htmlptrace() 的手册页 * ptrace 上的维基百科页面包含其他 UNIX https://en.wikipedia.org/wiki/Ptrace

的历史和概述

ptrace() 可用于 stop/start 进程,get/set 其寄存器,读写其内存,执行单步执行或在每次系统调用时停止。

一些基本信息、内存映射和对内存的访问也可以导出到 /proc 特殊文件系统(procfs 作为当前进程的 /proc/self/ 目录和 /proc/PID pid 为 PID.

的进程

extend gdb you may use gdb commands or gdb python API interface and python commands,这比重新实现 gdb 的基本部分更容易(有时更可移植)。

does linux also provide such a series of debug api so that we can easily write our own debugger, or extend gdb, not having to gain knowledge about linux kernel, etc?

这是一种 错觉 可以在不了解 Windows 内核的情况下轻松编写 Windows 调试器。

在 Linux 上,提供的 API 更难使用,使用 ptrace 编写调试器几乎肯定需要深入了解内核进程管理。