gpt4 book ai didi

android - 我如何使用 "strace"知道组件的系统调用

转载 作者:行者123 更新时间:2023-11-30 03:10:20 25 4
gpt4 key购买 nike

有谁知道哪个系统调用属于 I/O 组件(WiFi、SD 卡或 GSP 等)?

我正在使用 strace 来跟踪应用程序,现在,我有一个应用程序(一个应用程序只有 wifi 开/关功能,A 的 PID=999),我使用 cmd 来键入命令

./strace -p 999 -t -v如果我使用此命令 ./strace -p 999 -t -v -e trace=open,close,read,write 输出例如:

04:18:11.473383 read(52, "D", 1)        = 1

04:18:11.476191 write(39, "W", 1) = 1

04:18:11.477198 write(53, "u", 1) = 1

04:18:11.478114 read(38, "W", 16) = 1

04:18:11.583430 read(52, "D", 1) = 1

04:18:11.584315 write(39, "W", 1) = 1

04:18:11.586787 write(53, "u", 1) = 1

04:18:11.587824 read(38, "W", 16) = 1

04:18:11.794337 read(38, "W", 16) = 1

04:18:11.800227 read(38, "W", 16) = 1

04:18:11.802210 syscall_983042(0x4e1d5428, 0x4e1d542c, 0, 0xfff, 0x408e54d8, 0x4e1d5428, 0x4e1d8469, 0xf0002, 0, 0x4e1d542c, 0xf81ef003, 0x14, 0, 0xbee5c738, 0x408b6093, 0x4006c8fc, 0x40000010, 0x4e1d5428, 0, 0, 0xc764, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) =

但输出有这么多...我无法解释......

所以,我想知道

  1. 所属组件是什么系统调用名称(属于wifi还是属于SDcard)
  2. 如何使用组件获取组件的系统调用(我应该使用什么命令?)
  3. 应该如何使用“strace”来跟踪SD卡?我应该有B应用程序(B应用程序只是打开SD卡还是关闭SD卡?)我不知道我可以做什么实验。

最佳答案

所有这些调用都属于文件系统组件。然后通过内核路由到实际的硬件驱动器。所以光看系统调用是没法知道的。

您需要做的是查找 open 调用以查看正在打开的文件。该调用将返回一个数字,称为文件句柄。该数字稍后用作读/写/关闭调用的第一个参数。

对于 WIFI,事情甚至更棘手,因为您将不得不监视一大堆套接字调用以及类似 sendto 的事情。 .此外,您还需要交叉引用路由映射。

基本上,您尝试做的事情在系统调用级别上确实很难做到。我过去常常通过更深入地了解内核和驱动程序来做这样的事情。你在这更接近实际硬件以查看上下文。

关于android - 我如何使用 "strace"知道组件的系统调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21104430/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com