Ltrace
来自百问网嵌入式Linux wiki
Zhouyuebiao(讨论 | 贡献)2019年12月26日 (四) 15:54的版本
目录
Ltrace
文章目的
- 本文提供了开始使用Linux工具所需的基本信息:ltrace [1 ]。
简介
- 下表简要介绍了该工具及其可用性,具体取决于软件包:
- 是:该工具已经存在(可以使用或激活),也可以在软件包中集成和激活。
- 没有:该工具不存在且无法集成,或者存在但无法在软件包中激活。
工具 | ||
---|---|---|
名称 | 类别 | 目的 |
ltrace | 追踪工具 | ltrace [1 ]用于显示对用户空间应用程序进行的共享库的调用。ltrace是一个用户空间应用程序。它的用法与strace 非常相似。 |
STM32MPU嵌入式软件发行版 | ||
入门资料包 | 开发者资料包 | 发行版资料包 |
没有 | 没有 | 是 |
适用于 Android 的STM32MPU嵌入式软件发行版 | ||
入门资料包 | 开发者资料包 | 发行版资料包 |
没有 | 没有 | 没有 |
在目标板上安装跟踪和调试工具
使用STM32MPU嵌入式软件发行版
分发包
- 要将 ltrace 合入到你的分发包镜像版本中,请按照以下步骤进行操作:
- 添加ltrace软件包以构建镜像
PC $> cd <your_Distribution_Package_root_dir>
PC $> echo 'IMAGE_INSTALL_append += "ltrace"' >> layers/meta-st/meta-st-openstlinux/recipes-st/images/st-image-weston.bbappend
- 重建完整的镜像
PC $> bitbake <full_image_name> # Needed to include ltrace into the final image rootfs
- 在板上重新加载新镜像:请参见刷新生成的镜像
使用入门
- 要使用ltrace,有两种主要方式:
- 1、提供你要为其列出动态库调用的程序的名称作为参数,并在需要时为其提供参数作为参数运行:
Board $> ltrace <Program> [ARGS]
- 例如:
Board $> ltrace weston-simple-egl
__libc_start_main(0x11a90, 1, 0xbec45d04, 0x131f0 <unfinished ...>
memset(0xbec456f8, 0, 72, 0x11a90) = 0xbec456f8
memset(0xbec45754, 0, 68, 0xbec45740) = 0xbec45754
wl_display_connect(0, 250, 32, 0xbec45750) = 0x26150
wl_proxy_marshal_constructor(0x26150, 1, 0x24e90, 0) = 0x2a268
wl_proxy_add_listener(0x2a268, 0x132e0, 0xbec456f8, 0) = 0
wl_display_roundtrip(0x26150, 0x132e0, 0xbec456f8, 0 <unfinished ...>
strcmp(0x2a404, 0x133e8, 1, 0x2a404) = 0
wl_proxy_marshal_constructor_versioned(0x2a268, 0, 0x24ed8, 1) = 0x2b070
strcmp(0x2a49c, 0x133e8, 2, 0x2a49c) = 16
strcmp(0x2a49c, 0x133f8, 115, 0x635f6c77) = -3
...
- 2、给出要研究的过程的 <PID> 作为参数:
Board $> ltrace -p <PID>
- 注意:<PID>值可以由`pidof <process_name>`代替
- 例如:
Board $> weston-simple-egl & ltrace -p `pidof weston-simple-egl`
has EGL_EXT_buffer_age and EGL_EXT_swap_buffers_with_damage
glGetShaderiv(1, 0x8b81, 0xbee14260, 0) = 0
glCreateShader(0x8b31, 0x8b31, 256, 1) = 2
glShaderSource(2, 1, 0xbee1425c, 0) = 0x1a96f0
glCompileShader(2, 0, 154, 0xbee14260) = 1
glGetShaderiv(2, 0x8b81, 0xbee14260, 0) = 0
glCreateProgram(2, 2, 256, 1) = 3
glAttachShader(3, 1, -1, 1) = 0
glAttachShader(3, 2, 0x8b30, 1) = 0
glLinkProgram(3, 0x8dd9, 0x8b31, 1) = 0x285234
glGetProgramiv(3, 0x8b82, 0xbee14698, 0) = 0
glUseProgram(3, 3, 256, 1) = 1
glBindAttribLocation(3, 0, 0x13884, 1) = 1
glBindAttribLocation(3, 1, 0x13888, 0) = 1
glLinkProgram(3, 0x1388e, 0, 0x1b9090) = 1
...
Board $> killall weston-simple-egl
深入学习
- 可以设置其他选项。有关详细信息,请参见手册页[2 ]。
参考
- 有用的外部链接
文件链接 | 文件类型 | 描述 |
---|---|---|
ltrace linux.die.net | 标准 | linux.die.net |
ltrace wikipedia.org | 标准 | wikipedia.org |
ltrace教程 | 用户指南 | go4expert.com |
跟踪培训 | 训练 | ellexus.com |