【发布时间】:2015-08-06 19:53:33
【问题描述】:
我了解如何使用单步执行和int 3 字节来调试程序。在第一种情况下,跟踪器使用PTRACE_SINGLESTEP 能够一次调试程序一条指令。在 x86 上,这意味着在调试时会设置陷阱标志。在第二种情况下,0xcc 字节被插入到被跟踪者的地址空间中,每当出现 SIGTRAP 时,控制权就会被传递回跟踪器(调试器)。
现在,当我使用 gdb 调试器附加到程序时,tracee 被暂停。内部会发生什么?是否插入了0xcc 字节? ptrace 库究竟是如何暂停 tracee 的执行的?
【问题讨论】: