【问题标题】:Strace is not working in MIPS targetStrace 在 MIPS 目标中不起作用
【发布时间】:2013-05-23 11:33:12
【问题描述】:

我正在使用具有 MIPS 处理器的嵌入式板。在目标上执行 strace 时遇到问题。

搭建环境:

glibc version: 2.3.2
gcc version: 3.4.4
strace version: 4.4.94 
linux version : 2.6.34.1

我已经为 MIPS 目标交叉编译了 strace,并尝试在目标中运行 strace。但是 strace 不起作用。我没有看到任何系统调用跟踪。

在目标上执行 strace 的输出:

#strace /bin/ls
(To be restarted).
#

我觉得我缺少一些配置或标志来配置以使 strace 工作。

CFLAGS = "-D_REENTRANT -g -Os -fomit-frame-pointer -pipe -march=mips32r2 -mtune=mips32r2 -Wall -g -DHAVE_SERVICE_CTRL"

请帮帮我。

【问题讨论】:

  • 感谢您的意见。我已在 CFLAGS 中将优化器标志从 Os 更改为 -O (CFLAGS="-D_REENTRANT -g -fomit-frame-pointer -pipe -march=mips32r2 -O -Wall -DHAVE_SERVICE_CTRL"),现在能够获取系统调用跟踪但仍然输出结果给出了一些大的返回值。 mode=open, "/etc/ld.so.preload", O_RDONLYDIRd/4464388-717129012:01:268633712

标签: mips embedded-linux


【解决方案1】:

strace 使用ptrace() 系统调用来跟踪目标可执行文件。 也许您的 Linux 发行版不支持ptrace()。 我会创建一个简单的测试程序,调用ptrace() 来查看它是否有效。

调试也会很有帮助。您可以使用gdb 设置远程调试,并在PC 上调试目标板。

【讨论】:

  • 删除 CFLAGS="-D_REENTRANT -g -fomit-frame-pointer -pipe -march=mips32r2 -Wall" 中的优化器标志后,strace 开始正常工作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多