strace 交叉编译

本文介绍了Linux系统中strace工具的重要性和用途,重点讲解如何进行strace的交叉编译,以帮助开发者在不同架构的系统上跟踪程序运行状态,排查问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

strace 是llinux下经常用的一个工具,可以用来跟踪 程序运行的状态,和察看程序运行时哪里出了问题。

用法:

strace program_name
下面是个实用例子,可以看到程序运行时的具体操作内容。:

$ strace test
execve("/usr/bin/test", ["test"], [/* 40 vars */]) = 0
brk(0)                                  = 0x8da7000
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
mmap2(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb76f4000
access("/etc/ld.so.preload", R_OK)      = -1 ENOENT (No such file or directory)
open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=71278, ...}) = 0
mmap2(NULL, 71278, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb76e2000
close(3)                                = 0
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
open("/lib/i386-linux-gnu/libc.so.6", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0000\226\1\0004\0\0\0"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0755, st_size=1734120, ...}) = 0
mmap2(NULL, 1743580, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7538000
mmap2(0xb76dc000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1a4) = 0xb76dc000
mmap2(0xb76df000, 10972, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xb76df000
close(3)                                = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7537000
set_thread_area({entry_number:-1 -> 6, base_addr:0xb7537900, limit:1048575, seg_32bit:1, contents:0, read_exec_only:0, limit_in_pages:1, seg_not_present:0, useable:1}) = 0
mprotect(0xb76dc000, 8192, PROT_READ)   = 0
mprotect(0x804f000, 4096, PROT_READ)    = 0
mprotect(0xb7717000, 4096, PROT_READ)   = 0
munmap(0xb76e2000, 71278)               = 0
brk(0)                                  = 0x8da7000
brk(0x8dc8000)                          = 0x8dc8000
open("/usr/lib/locale/locale-archive", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=8752640, ...}) = 0
mmap2(NULL, 2097152, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7337000
mmap2(NULL, 4096, PROT_READ, MAP_PRIVATE, 3, 0x5e0) = 0xb76f3000
close(3)                                = 0
close(1)                                = 0
close(2)                                = 0
exit_group(1)                           = ?

这里交叉编译使用的是mipsel-linux工具,这里用的是strace-4.8版:
./configure --host=mipsel-linux
make
这样就会在当前目录生成一个strace工具。把他拷到目标板上就能运行。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值