“Ltrace”的版本间的差异
来自百问网嵌入式Linux wiki
Zhouyuebiao(讨论 | 贡献) 标签: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嵌入式软件发行版
分发包
- 要将 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 |