使用ltrace跟踪库函数调用

ltrace的使用方式和strace非常相似,不但可以跟踪系统调用和信号,还可以跟踪程序调用的库函数。ltrace在输出结果时为了区分库函数和系统调用,系统调用会标以“SYS_”的前缀。

ltrace的使用方法如下所示:

ltrace [option] command

常用的option包括:

-f:除了跟踪当前进程外,还跟踪其子进程。
-S:显示执行的系统调用
-o file :将输出信息写到文件file中,而不是显示到标准错误输出(stderr)。
-p pid :绑定到一个由pid对应的正在运行的进程。此参数常用来调试后台进程。

以下是一个输出示例:

__libc_start_main(0x8048514, 1, 0xbf9580b4, 0x8048600, 0x80485f0 <unfinished ...>
open("/tmp/hello", 66, 027745300010 <unfinished ...>
SYS_open("/tmp/hello", 66, 027745300010)                                     = 3
<... open resumed> )                                                         = 3
strlen("hello, world!")                                                      = 13
write(3, "hello, world!", 13 <unfinished ...>
SYS_write(3, "hello, world!", 13)                                            = 13
<... write resumed> )                                                        = 13
close(3 <unfinished ...>
SYS_close(3)                                                                 = 0
<... close resumed> )                                                        = 0
SYS_exit_group(0 <no return ...>
+++ exited (status 0) +++
Advertisements

发表评论

Fill in your details below or click an icon to log in:

WordPress.com 徽标

You are commenting using your WordPress.com account. Log Out /  更改 )

Google photo

You are commenting using your Google account. Log Out /  更改 )

Twitter picture

You are commenting using your Twitter account. Log Out /  更改 )

Facebook photo

You are commenting using your Facebook account. Log Out /  更改 )

Connecting to %s

%d 博主赞过: