“Ltrace”的版本间的差异

来自百问网嵌入式Linux wiki
 
标签visualeditor-switched
 
第1行: 第1行:
 +
 +
=Ltrace=
 +
==文章目的==
 +
: 本文提供了开始使用Linux工具所需的基本信息:ltrace [1 ]。
 +
==简介==
 +
: 下表简要介绍了该工具及其可用性,具体取决于软件包:
 +
* 是:该工具已经存在(可以使用或激活),也可以在软件包中集成和激活。
 +
* 没有:该工具不存在且无法集成,或者存在但无法在软件包中激活。
 +
{| class="wikitable"
 +
!colspan="3" | 工具
 +
|-
 +
| 名称
 +
| 类别
 +
| 目的
 +
|-
 +
|ltrace
 +
|追踪工具
 +
|ltrace [1 ]用于显示对用户空间应用程序进行的共享库的调用。ltrace是一个用户空间应用程序。它的用法与[https://wiki.st.com/stm32mpu/wiki/Strace strace] 非常相似。
 +
|-
 +
!colspan="3" | STM32MPU嵌入式软件发行版
 +
|-
 +
| 入门资料包
 +
| 开发者资料包
 +
| 发行版资料包
 +
|-
 +
|没有
 +
|没有
 +
|是
 +
|-
 +
!colspan="3" | 适用于 Android 的STM32MPU嵌入式软件发行版
 +
|-
 +
| 入门资料包
 +
| 开发者资料包
 +
| 发行版资料包
 +
|-
 +
|没有
 +
|没有
 +
|没有
 +
|}
 +
 +
 +
==在目标板上安装跟踪和调试工具==
 +
===使用STM32MPU嵌入式软件发行版===
 +
: {{redtex|ltrace 不是标准STM32MPU嵌入式软件分发镜像的一部分。}}
 +
 +
====分发包====
 +
: 要将 ltrace 合入到你的分发包镜像版本中,请按照以下步骤进行操作:
 +
:: 添加ltrace软件包以构建镜像
 +
<syntaxhighlight lang="bash">
 +
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
 +
</syntaxhighlight>
 +
 +
:: 重建完整的镜像
 +
<syntaxhighlight lang="bash">
 +
PC $> bitbake <full_image_name> # Needed to include ltrace into the final image rootfs
 +
</syntaxhighlight>
 +
 +
:: 在板上重新加载新镜像:请参见[https://wiki.st.com/stm32mpu/wiki/STM32MP1_Distribution_Package#Flashing_the_built_image 刷新生成的镜像]
 +
 +
==使用入门==
 +
: 要使用ltrace,有两种主要方式:
 +
 +
:: 1、提供你要为其列出动态库调用的程序的名称作为参数,并在需要时为其提供参数作为参数运行:
 +
<syntaxhighlight lang="bash">
 +
Board $> ltrace <Program> [ARGS]
 +
</syntaxhighlight>
 +
::: 例如:
 +
<syntaxhighlight lang="bash">
 +
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
 +
...
 +
</syntaxhighlight>
 +
 +
:: 2、给出要研究的过程的 <PID> 作为参数:
 +
<syntaxhighlight lang="bash">
 +
Board $> ltrace -p <PID>
 +
</syntaxhighlight>
 +
 +
::: {{redtext|注意:}}<PID>{{redtext|值可以由}}`pidof <process_name>`{{redtext|代替}}
 +
::: 例如:
 +
<syntaxhighlight lang="bash">
 +
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
 +
</syntaxhighlight>
 +
 +
==深入学习==
 +
: 可以设置其他选项。有关详细信息,请参见手册页[2 ]。
 +
==参考==
 +
: 1. [https://www.ltrace.org/ https://www.ltrace.org/]
 +
: 2. [http://man7.org/linux/man-pages/man1/ltrace.1.html http://man7.org/linux/man-pages/man1/ltrace.1.html]
 +
 +
*有用的外部链接
 +
{| class="wikitable"
 +
|-
 +
! 文件链接 !! 文件类型 !! 描述
 +
|-
 +
| ltrace linux.die.net || 标准 || linux.die.net
 +
|-
 +
| ltrace wikipedia.org || 标准 || wikipedia.org
 +
|-
 +
| ltrace教程 || 用户指南 || go4expert.com
 +
|-
 +
| 跟踪培训 || 训练 || ellexus.com
 +
|}
 +
 
[[Category:Linux_Operating_System]]
 
[[Category:Linux_Operating_System]]
 
[[Category:Linux_tracing_tools]]
 
[[Category:Linux_tracing_tools]]

2019年12月26日 (四) 15:54的最新版本

Ltrace

文章目的

本文提供了开始使用Linux工具所需的基本信息:ltrace [1 ]。

简介

下表简要介绍了该工具及其可用性,具体取决于软件包:
  • 是:该工具已经存在(可以使用或激活),也可以在软件包中集成和激活。
  • 没有:该工具不存在且无法集成,或者存在但无法在软件包中激活。
工具
名称 类别 目的
ltrace 追踪工具 ltrace [1 ]用于显示对用户空间应用程序进行的共享库的调用。ltrace是一个用户空间应用程序。它的用法与strace 非常相似。
STM32MPU嵌入式软件发行版
入门资料包 开发者资料包 发行版资料包
没有 没有
适用于 Android 的STM32MPU嵌入式软件发行版
入门资料包 开发者资料包 发行版资料包
没有 没有 没有


在目标板上安装跟踪和调试工具

使用STM32MPU嵌入式软件发行版

模板:Redtex

分发包

要将 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 ]。

参考

1. https://www.ltrace.org/
2. http://man7.org/linux/man-pages/man1/ltrace.1.html
  • 有用的外部链接
文件链接 文件类型 描述
ltrace linux.die.net 标准 linux.die.net
ltrace wikipedia.org 标准 wikipedia.org
ltrace教程 用户指南 go4expert.com
跟踪培训 训练 ellexus.com