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

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

我的问题是,linux是否也提供了这样一系列的调试api,以便我们可以轻松编写自己的调试器,或者扩展gdb,而不必了解有关linux内核的知识等等?

最佳答案
在Linux(和一些Unix)中有ptrace()用户空间API来实现调试器(gdb)或跟踪器(strace):
* Linux http://man7.org/linux/man-pages/man2/ptrace.2.html中的ptrace()的手册页
* ptrace上的维基百科页面,其他UNIX https://en.wikipedia.org/wiki/Ptrace中包含历史和概述

ptrace()可用于停止/启动进程,获取/设置其寄存器,读取和写入其内存,执行单步执行或在每个系统调用时停止.

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

extend gdb,你可以使用gdb命令或gdb python API interfacepython commands,它们比重新实现gdb的基本部分容易(有时更便携).

转载注明原文:linux是否提供任何DEBUG api,比如windows? - 代码日志