问题标签 [ltrace]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c - 为什么用 5 个参数调用我的 mprotect 函数?
根据mprotect 的 Linux 手册页,该函数有 3 个参数:
但是在我正在分析的程序上运行 ltrace 时,我看到 mprotect 是这样调用的:
第 4 和第 5 个论点是为了什么?
我正在使用 ltrace 0.5 版。和内核 2.6.24-24-generic
linux - 我应该监控哪些进程间锁定调用?
我正在使用strace
/监视一个进程,ltrace
希望找到并拦截一个检查并可能激活某种全局共享锁的调用。
虽然我之前已经处理并阅读了 Linux 上几种形式的进程间锁定,但我对调用要查找的内容一无所知。
目前我唯一的怀疑是futex()
在流程执行的早期出现。
更新0
我对自己的追求有些困惑。我正在监视现有进程以调用持久进程间内存或等效的 . 我想知道要查找的系统和库调用。我无意自己调用这些,所以自然futex()
会出现,我相信很多库都会在这方面实现它们的锁定调用,等等。
更新1
我想要一个函数名称列表或文档链接,我应该在ltrace
andstrace
级别监视(并指定哪个)。任何其他关于如何跟踪和定位全局锁的好建议都会很棒。
strace - strace/ltrace 输出不一致的信息
strace pwd
:
ltrace pwd
:
为什么第一个参数NULL
在ltrace
?
似乎 strace/ltrace 都使用ptrace
系统调用,但为什么它们得到不同的信息?
c++ - 简单 C++ 程序开始时的一系列 strcmp() 调用
我有一个简单的 C++ 程序:
我在玩“scratchbox”——我用来为 ARM 平台编译应用程序的交叉编译平台。我在诺基亚 N900 手机上运行它。
在调查一些性能问题时,我注意到一开始有几个对 strcmp() 的调用。我使用“ltrace”来跟踪库调用,当我在目标(我的手机)上运行它时,看到一系列对 strcmp() 的调用,这让我很好奇——这些调用的目的是什么?
c - ltrace 和 strace 工具中的行号信息
是否可以查看行号和文件名(对于使用 ltrace/strace 运行的程序)以及库调用/系统调用信息。
例如:
ltrace 或任何其他工具: malloc(20) :: code.c::21
我已经尝试了 ltrace/strace 的所有选项,但无法找到获取此信息的方法。
如果不能通过 ltrace/strace,我们是否有任何适用于 GNU/Linux 的并行工具选项?
android - 使用 ltrace 分析 Android 应用程序
我需要分析 android 应用程序的动态库调用,并决定为此目的使用“ltrace”工具进行分析。我将“ltrace”工具合并到android包中,然后一起编译成功。它适用于 shell 程序,就像通常的 linux 控制台应用程序一样。
但是,我无法正确分析从“Zygote”进程派生的 android 应用程序。我尝试将 ltrace 附加到“Zygote”进程以跟踪它的子进程,但我只收到 SIGCHLD 和 SIGSTOP 信号并异常终止,显示以下错误。
意外指令 0xffffffff 在 0xffff0508
我只是想知道是否有人曾经在 android 系统上尝试过这种分析。任何简短的评论都会对我很有帮助。
先感谢您。
debugging - ltrace 只打印两个调用
我在文字处理器上运行ltrace并打开了一个示例文件,但令人惊讶的是只得到了两个调用。
ltrace 不应该打印所有库调用吗?
iphone - iphone:strace、dtruss、dtrace 还是同等产品?
有谁知道是否有类似strace
、、dtruss
或dtrace
用于 iPhone 的东西?
c++ - 如何从 ltrace 获取 C++ 堆分配的虚拟方法名称?
我已经为此苦苦挣扎了大约一天。
我能够构建一个简单的共享库和测试程序,当我在 ltrace 控制下运行它时,我可以获得静态、虚拟和纯虚拟方法的方法名称。
我使用 cmake 构建我的共享库。我有纯虚拟父类,有些方法会抛出异常。
当我在测试程序上运行 ltrace 时,我得到的唯一方法名来自静态方法。
相反,我看到很多这样的行:
使 VERBOSE=1 显示:
任何想法在哪里看?谢谢!
好的,这是交易。如果在堆上分配了一个对象,我看不到虚拟/纯虚拟方法。如果它在堆栈上,我会这样做:
有什么线索吗?
gdb - 监控linux动态库
我想监视(调试)一个用 C 语言编写的 linux 动态库。
我想看看何时以及将哪些参数传递给它。
监视“X”的库由另一个动态库“Y”调用。
“X”和“Y”都出现在可执行文件“A”的 /proc/pid/maps 中。
使用 ltrace,在可执行文件上没有显示 lib X 或 Y。
可执行文件正在使用多个线程。
此外,当在 exec 上使用 ldd 命令时,它没有提及任何关于 libs X 或 Y 的内容
。ldd Y,表明 Y 需要 X。
在所有库上使用 ldd,项目中的 exec 没有提到任何需要 Y 的人。
但 Y 似乎已加载到 exec 的 /proc/pid/maps 中。
我不确定我可以采取哪些步骤来调试 X lib,不胜感激。