ltrace(库跟踪工具)如何工作?

2024-01-12

如何ltrace https://www.man7.org/linux/man-pages/man1/ltrace.1.html work?

它如何找出程序调用了哪些库函数?

是否存在所有对库函数的调用都经过的公共代码路径?或许ltrace在这个公共代码路径中设置断点?


动态可执行文件具有链接器在解析需要连接到库函数的引用时使用的符号表。 (您可以通过运行自己看到这一点objdump -T /path/to/binary).

该符号表可以通过其他工具访问——例如ltrace——同样,确定需要挂钩哪些函数并单独遍历该列表也很简单。

See 关于 ltrace 内部结构的讨论 https://www.kernel.org/doc/ols/2007/ols2007v1-pages-41-52.pdf在 Ottowa Linux Symposium 上提出,该研讨会提供了详细的功能细分;要跟踪源代码,请参阅官方存储库 http://anonscm.debian.org/cgit/collab-maint/ltrace.git, or a 第三方github镜像 https://github.com/ice799/ltrace.

一些较新的版本(比那个谈话更新)也吸引了dlopen()call,也能够跟踪动态加载库的调用。稍微想一想,那里的机制应该是相当明显的——如果可以替换的话dlopen()用垫片(当dlopen()它本身是动态链接的,如上所述),然后可以在它返回的任何函数指针上设置断点。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ltrace(库跟踪工具)如何工作? 的相关文章

  • 如何从脚本编辑 /etc/sudoers?

    我需要编辑 etc sudoers从脚本中添加 删除白名单中的内容 假设我有一个可以处理普通文件的命令 我如何将其应用到 etc sudoers 我可以复制并修改它 然后有visudo用修改后的副本替换原始版本 通过提供我自己的脚本 EDI
  • 我们如何在使用循环时调用 ansible playbook 中的变量

    我有两个文件 其中这些文件包含server names and server IP s 我想更改 替换一些特定的server names and IP addressees根据要求在两个文件中 这与这篇文章 因为它被要求开设一个新职位 ht
  • 何时用引号将 shell 变量括起来?

    我应该或不应该在 shell 脚本中用引号括住变量吗 例如 下列说法正确的是 xdg open URL eq 2 or xdg open URL eq 2 如果是这样 为什么 一般规则 如果它可以为空或包含空格 或实际上任何空格 或特殊字符
  • Qt 嵌入式触摸屏 QMouseEvents 在收到 MouseButtonRelease 之前未收到

    我在带有触摸屏的小型 ARM 嵌入式 Linux 设备上使用 Qt 4 8 3 我的触摸屏配置了 tslib 并对其进行了校准 因此 etc 中有一个 pointcal 文件 我的触摸事件的位置工作得很好 但无论如何我都会在鼠标按下或鼠标释
  • 如何将一个文本文件拆分为多个 *.txt 文件?

    我有一个文本文件file txt 12 MB 包含 something1 something2 something3 something4 有没有办法分开file txt分成 12 个 txt 文件 比方说file2 txt file3 t
  • Linux中如何避免sleep调用因信号而中断?

    我在 Linux 中使用实时信号来通知串行端口中新数据的到达 不幸的是 这会导致睡眠呼叫在有信号时被中断 有人知道避免这种行为的方法吗 我尝试使用常规信号 SIGUSR1 但我不断得到相同的行为 来自 nanosleep 联机帮助页 nan
  • 任何退出 bash 脚本但不退出终端的方法

    当我使用exitshell 脚本中的命令 该脚本将终止终端 提示符 有什么方法可以终止脚本然后停留在终端中吗 我的剧本run sh预计通过直接获取或从另一个脚本获取来执行 编辑 更具体地说 有两个脚本run2 sh as run sh ec
  • bash 将输出重定向到文件,但结果不完整

    重定向命令输出的问题已经被问过很多次了 但是我有一个奇怪的行为 我使用的是 bash shell debian 版本 4 3 30 1 release 并尝试将输出重定向到文件 但并非所有内容都记录在文件中 我尝试运行的 bin 文件是 l
  • BASH:输入期间按 Ctrl+C 会中断当前终端

    我的 Bash 版本是 GNU bash version 4 3 11 1 release x86 64 pc linux gnu 我有一段这样的代码 while true do echo n Set password read s pas
  • 正则表达式删除块注释也删除 * 选择器

    我正在尝试使用 bash 从 css 文件中删除所有块注释 我有以下 sed 命令的正则表达式 sed r s w s w d 这可以很好地去除块注释 例如 This is a comment this is another comment
  • 在汇编中使用 printf 会导致管道传输时输出为空,但可以在终端上使用

    无输出 https stackoverflow com questions 54507957 printf call from assembly do not print to stdout即使在终端上 当输出不包含换行符时也有相同的原因
  • grep 排除文件的数组参数

    我想从我的文件中排除一些文件grep命令 为此我使用参数 exclude excluded file ext 为了更容易阅读 我想使用包含排除文件的 bash 数组 EXCLUDED FILES excluded file ext 然后将
  • awk 在循环中使用时不打印任何内容[重复]

    这个问题在这里已经有答案了 我有一堆使用 file 1 a 1 txt 格式的文件 如下所示 A 1 B 2 C 3 D 4 并使用以下命令添加包含每个文件名称的新列 awk print FILENAME NF t 0 file 1 a 1
  • 在 docker 中重定向命令输出

    我想为我的服务器做一些简单的日志记录 它是一个在 Docker 容器中运行的小型 Flask 应用程序 这是 Dockerfile Dockerfile FROM dreen flask MAINTAINER dreen WORKDIR s
  • ssh 连接超时

    我无法在 git 中 ssh 到 github bitbucket 或 gitlab 我通常会收到以下错误消息 如何避免它 输出 ssh T email protected cdn cgi l email protection i ssh
  • 在内核代码中查找函数的最佳方法[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我开始浏览内核代码 遇到的一件事是如何跟踪函数调用 结构定义等 有没有一种好的方法可以快速跳转到函数定义并退出 我尝试过 Source N
  • 仅使用containerd(不使用Docker)修剪容器镜像

    如果我刚刚containerd安装在 Linux 系统上 即 Docker 是not安装 如何删除未使用的容器映像以节省磁盘空间 Docker 就是这么方便docker system prune https docs docker com
  • 执行命令而不将其保留在历史记录中[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 在进行软件开发时 经常需要在命令行命令中包含机密信息 典型示例是将项目部署到服务器的凭据设置为环境变量 当我不想将某些命令存储在命令历史记
  • SSH,运行进程然后忽略输出

    我有一个命令可以使用 SSH 并在 SSH 后运行脚本 该脚本运行一个二进制文件 脚本完成后 我可以输入任意键 本地终端将恢复到正常状态 但是 由于该进程仍在我通过 SSH 连接的计算机中运行 因此任何时候它都会登录到stdout我在本地终
  • 如何从 OpenTracing API 获取跟踪 ID?

    In 105 https github com opentracing opentracing java issues 105大卫B问 我希望拥有对 Span id SpanContext id 的读取访问权限 以便能够在日志和错误报告中使

随机推荐

  • 温莎城堡:如何更新组件注册

    如果我在配置中定义了 container Register Component For
  • 如何并行处理 CSV 文件?

    我的计算机上的目录中有几千个 CSV 文件 需要根据我制定的正则表达式进行验证 path to validator 指向 Scala 脚本 该脚本通过命令行上的 windows bat 文件运行 它读取正则表达式和 csv 文件并给出 通过
  • 将变量从 PHP 传递到 javascript 并传递到 html 表单

    我在 WordPress 中使用 jQuery jQuery 表单和 PHP Mail 设置的联系表单来发送表单生成的电子邮件 但确实遇到了一个非常小的问题 为了替换我当前的联系表单 从联系表单页面内执行 pHp 验证 然后使用 PHP M
  • 在同一函数内,通过间接访问不在作用域内的局部变量是否是 UB?

    在第二个右大括号之后 b只能通过间接访问a int main int a int b 42 a b printf d a UB return 0 Since b不再在范围内 这是 UB 吗 我知道从已经返回的函数中取消引用指向非静态局部变量
  • 使用 CloudFormation 读取机密

    我正在尝试在 CloudFormation 中创建一个 AWS 堆栈 并在 JSON 中包含一个秘密 我不希望参数中显示密钥的值 也不希望我的实例 fargate 或 ec2 访问密钥管理器 我希望 CloudFormation 从机密管理
  • TFS 2010:将 _PublishedWebsites 复制到测试服务器

    我看过类似的问题和答案 但发现它们并不是我真正想要的 我有一个大型解决方案 其中包含多个网络项目 所有 Web 项目都共享一些通用代码 因此它们都是同一解决方案的一部分 有一个被所有项目引用的通用项目 我一直在 Team Foundatio
  • 在 opener 窗口上调用函数

    孩子失去了父母 我有一个父窗口 当有人单击图像时 JS 弹出窗口会打开并显示照片及其信息 要关闭弹出 子窗口 并在父 开启窗口上闪烁一个元素 我一直在使用此函数 function closeWindow var currentID docu
  • dash_bootstrap_components 安装成功但无法识别

    我的破折号工作得很好 我已经安装了 dash bootstrap components 来为我的破折号提供样式 I wrote pip install dash bootstrap components并完美安装 但是当我运行该应用程序时
  • 如何在 Angular2/4/5 中实现自定义异步验证器

    1 Angular 还支持它吗 看this https github com angular angular issues 1068开放问题 2 如果是的话 那么下面的代码有什么问题 export class someClass myFor
  • 使用 pyspark 进行分层采样

    我有一个火花DataFrame其中有一列具有很多零而且很少 仅占0 01 我想抽取一个随机子样本 但要进行分层 以便保持该列中 1 与 0 的比例 可以在 pyspark 中做吗 我正在寻找一个非标量解决方案并基于DataFrame是而不是
  • 如何使用 jquery.load() 在内容之前加载页眉和页脚

    我使用以下方法将页眉和页脚调用到不同的页面中jquery load 方法 但在加载页面时 页脚和页眉有延迟 那是当我运行这个 我的内容 之后 仅显示标题 我想同时显示页眉 内容 页脚加载 你能帮我么 div div
  • R 中的隐式变量引用

    我该如何评价c 2 通过致电z a lt c 1 2 3 b lt c 4 5 6 c lt cbind a b z lt c 2 eval z 不管用 可能是下面这样 eval parse text z
  • 如何通过部分行键过滤HBase的Scan?

    我有带有行键的 HBase 表 其中包含文本 ID 和时间戳 如下所示 string id1 1470913344067 string id1 1470913345067 string id2 1470913344067 string id
  • 获取 YouTube 中的音乐流派

    当我们查看 YouTube 页面并单击 音乐 时 我们可以看到不同流派的歌曲 例如 说唱 摇滚 乡村 等 如何使用 YouTube API 检索此数据 按类型分类的视频列表 实现此目的的一种方法是使用 Topics API 与 API V3
  • Py安装程序问题

    我使用 pyinstaller 创建了 python 程序的 exe 版本 但是当我尝试运行我的应用程序时 那个 exe 我收到这样的错误 问题可能是由什么引起的 提前致谢 None
  • 在 Django 中获取 QuerySet 的值

    我怎样才能获得价值course code在这个查询集中
  • 如何以编程方式使用 PIN 码登录 Windows

    在 Windows 8 中 引入了一种针对非域用户的新身份验证方法 使用控制面板中设置的 PIN 目前我们的应用程序支持使用预先保存的密码登录 WindowsLogonUserW 现在还需要 PIN 码的支持 我们如何从 NET 应用程序直
  • proxy_set_header为什么是Host $host; nginx 1.8.0 不再工作?

    I used proxy set header Host host 将主机标头设置为原始请求主机 在 nginx 1 4 1 中 这工作正常 现在升级到 1 8 0 后 我得到的是本地 IP 而不是浏览器传递的主机 为什么会发生这种情况以及
  • Flutter 未来建设者名单

    我在理解未来构建器如何在颤振中工作时遇到一些困难 我想从未来的调用中传递一个字符串列表 并且我想在 SingleChildScrollView 中显示它们 问题是当我访问snapshot data我无法访问列表的元素 因为在我的 Singl
  • ltrace(库跟踪工具)如何工作?

    如何ltrace https www man7 org linux man pages man1 ltrace 1 html work 它如何找出程序调用了哪些库函数 是否存在所有对库函数的调用都经过的公共代码路径 或许ltrace在这个公