如何在 LLDB 中“捕获系统调用”?

use*_*856 7 lldb

众所周知,我们可以在 GDB 中使用命令“catch syscall”来中断每个系统函数。

LLDB中有类似的命令吗?

(gdb) catch syscall
Catchpoint 1 (syscall)
(gdb) r
Starting program: /tmp/catch-syscall

Catchpoint 1 (call to syscall 'close'), \
0xffffe424 in __kernel_vsyscall ()
(gdb) c
Continuing.

Catchpoint 1 (returned from syscall 'close'), \
0xffffe424 in __kernel_vsyscall ()
(gdb)
Run Code Online (Sandbox Code Playgroud)

Jim*_*ham 3

还没有,请随时使用http://lldb.llvm.org错误报告链接提交增强请求。

如果您使用的是 Mac OS X 并且只是对记录系统调用感兴趣,您可以使用 dtrace,您可以让它转储堆栈跟踪等。如果您需要在系统调用时在调试器中停止,这没有帮助,但可能适用于某些目的。