问题标签 [strace]
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 - select() 系统调用占用 CPU
我编写了一个接受不同远程客户端的应用程序,并基于select()
将作业分配给不同的处理程序。我注意到在一个运行 ARM926EJ-S 和内核 2.6.33-rc4 的平台上,应用程序使用了大量的 CPU!这是通过使用strace -c运行我的应用程序 30 秒可以看到的:
但是,如果我从远程客户端连续向应用程序发送数据,则 select 使用的 CPU 会少得多!
我想知道是否select()
在繁忙的等待中实施。但是,在较旧的平台上,运行 MIPS 处理器和 2.6.30.10 Linux 内核并没有出现这个问题,尽管我应该交叉编译 strace 来确认......!而且由于数据“很少”发送,我大多处于最坏的情况!
我想知道问题可能来自哪里!C 库?Linux内核?另一方面,我不确定编写多线程应用程序是否会因为pthread
关键部分...而导致更好的性能?
我在网上看了两篇有趣的文章:
不幸的是,它们已经很老了(从 '98/'99 开始)我想知道其他人是否遇到过这种问题,或者您是否有任何其他建议来提高性能或指出真正的问题?
编辑:
我注意到我的应用程序使用 CPU 连接的客户端越多,尽管客户端不发送任何数据!由于大部分时间都花在了select上,我认为select本身会消耗更多的CPU!我可以在 ARM 下使用哪些其他免费工具来分析我的应用程序并指出问题?Valgrind 在 ARM9 上(还)不工作......
php - 如何跟踪运行给定进程的 PHP 脚本?
我有一个在 VPS 托管服务上运行的自定义脚本的网站。所有脚本都通过 index.php 使用 mod_rewrite 和 .htaccess 来获取友好的 URL
我的脚本中的某些内容正在产生高 CPU 使用率,如下所示:
当我去strace
一个给定的过程时,我得到了我不明白的:
这在无限循环中不断重复。
我需要知道的是如何追踪导致此问题的确切 PHP 脚本。有什么建议么?
linux - 发送到 pid 和组
我试图从 linux 上的 strace 中理解这一行:
我在网上和有关 sendto 的手册页中查看过,但我没有看到 pid 和组的参考。未提及事件 AF_NETLINK。
pid 和 groups 参数是什么意思?我在哪里可以找到有关此功能的正确文档?
谢谢
linux - nohup 进程在 xterm 关闭时死亡,但在退出时没有
我有一个问题,一个简单的 nohup 命令似乎表现得很奇怪。我将其归结为一个名为 Sleep 的小型 Java 应用程序,它执行
我正在运行 nohup 如下:
然后我在另一个窗口中运行 strace 寻找信号,如下所示寻找我的 pid (12345)
如果在我的原始窗口中输入“退出”以关闭 shell,我会看到进程继续运行而没有收到信号。但是,如果我关闭腻子窗口(单击菜单栏上的 x),我会看到 nohup 进程确实得到了 SIGHUP
我认为 nohup 应该拦截/不传递 SIGHUP。我已经切换到使用 setsid 并且无论我如何关闭终端窗口,我都会得到正确的行为。难道我做错了什么?似乎 nohup 工作不正常,这在我正在处理的实际问题中造成了一些严重的问题。
performance - 解释 strace 以表征延迟/延迟
我在 Linux Kernel 2.6.27.45 的嵌入式系统上运行了一个守护进程。其中一个进程没有按预期执行,我尝试使用strace进行进一步分析。(我添加了一些功能以将附加进程的堆栈跟踪打印到 strace,遵循网上的一些帖子)。使用的命令是:
我得到如下输出(在第 1 列排序后):
我的问题是:
(1) 如果我们以 0.252104 开头的行为例,这是否意味着 252ms 包括先前在堆栈上的所有函数(1019e878,...10191fa0) 和执行到调用 futex( ) 在当前堆栈 (082f4808...1219a614,..10578674) 加上任务被调度的时间加上执行 futex() 调用(即 33us)?
(2) 有没有办法确定 futex() 调用是否真的导致进程等待?
(3) 内核在进行系统调用时是否会调度该任务?
(4) 以0.282577开头的行中,SIGALARM时间是否会导致283ms的延迟?(5) 在以 0.417500 开头的行中,调用 ioctl() 会导致 418ms 的延迟吗?(虽然 ioctl() 本身是在 32us 内完成的)。谢谢并恭祝安康。
c++ - strace 可以阻止程序的正确执行吗?
我想知道 strace 是否会导致它正在跟踪的程序出现异常。目前,我正在尝试跟踪一个随机分段错误错误(但当我使用 strace 时,程序似乎永远不会以这种方式崩溃),这是在我调用pthread_cond_wait()
.
当我直接运行我的程序时——它实际上是 c/c++ 的混合体,它有时会按预期工作,但如前所述,有时它会崩溃pthread_cond_wait()
(顺便说一句,如果有人想帮助我解决这个问题,请参阅此处,任何帮助将不胜感激)。
如果我直接运行我的程序并将 strace 附加到这样的进程:
输出是单行的,它说它正在等待一个 futex(实际上像这样:)
如果我像这样从 strace 运行我的程序:
然后在我的文件输出的某个时刻,准确地说,当我调用 时pthread_cond_wait()
,它会不断发送类似这样的多行垃圾邮件(并且每次futex()
调用等待的值都比以前高,这里是 15)
我还尝试将 strace 作为一个孩子而不是该过程的父母来运行(希望它会有所作为)。即使我试图捕捉那个随机分段错误错误,它也从未出现/发生过。
现在我的问题是这是否常见和故意,或者我的 strace-call 是否是虚假的。如果没有,是否有任何系统调用我需要注意,因为它们可能不适用于 strace,或者这种奇怪的行为是否涉及一组系统调用?有没有办法解决?
我正在使用 debian-squeeze,如果这可能相关的话。
更新 1
我完全忘了提到我正在运行多个线程(POSIX 线程)和几个孩子。虽然不pthread_cond_wait()
应该遇到任何比赛,因为它绝对是 a 之后的第一个调用,pthread_mutex_lock()
它访问pthread_cond_t
和pthread_mutex_t
我正在解析为参数。但我不知道里面是否pthread_cond_wait()
可能有任何竞争条件。如有必要,我将提供程序代码。
perl - Coro + Coro::LWP 冻结
我有使用 Coro、Coro::LWP 和 LWP::UserAgent 的脚本。我提出了一系列请求并通过 Coro 的 async {} 运行它们。然后我使用他们的结果并保存到文件。脚本运行数小时或有时数分钟,然后冻结。我已经进行了 strace 查找以了解它在做什么。有一堆动作,但在保存结果后,在冻结之前有这个动作:
理解冻结有什么奇怪的吗?
在 PerlMonks 上交叉发布。
已解决:这是一个奇怪的睡眠时间,有非常多的秒数(比如 4000 天)。
shell - How to strace adb shell am start myandroidapp
I need to lean on you for some help on stracing android apps in the sdk emulator
here is my setup
android sdk emulator running android api 4.03 adb shell connected to emulator.
I am able to install an apk usng adb install filename.apk
I am able to run the app using adb shell am start -a android.intent.action.Main -n com.akproduction.notepad/com.akproduction.notepad.NoteList
I try to strace using (adb shell) strace am start -a android.intent.action.Main -n com.akproduction.notepad/com.akproduction.notepad.NoteList but I get nothing!
how do you trace the runtime behavior of android apps and their installation ?
thanks,
Jose.
p.s. the test app is located here: http://www.appbrain.com/app/ak-notepad/com.akproduction.notepad
android - Android:如何使用 ADB shell 跟踪应用程序 am start
我需要有关在 SDK 模拟器中跟踪 Android 应用程序的帮助。
这是我的设置:
我有一个 Android SDK 模拟器,运行连接到模拟器的 Android API 4.03 ADB shell。
我可以使用 ADB install filename.apk 安装 APK
我能够使用 ADB shell 运行应用程序am start -a android.intent.action.Main -n com.akproduction.notepad/com.akproduction.notepad.NoteList
我尝试使用(ADB shell)进行 strace,strace am start -a android.intent.action.Main -n com.akproduction.notepad/com.akproduction.notepad.NoteList
但我什么也没得到!
您如何跟踪 Android 应用程序的运行时行为及其安装?
(PS 测试应用程序位于此处。
c - 没有 mmap2 系统调用 strace 的内存分配?
mmap2
是否可以在没有调用的情况下分配内存?
我正在开发 A10 板视频播放器,我有一个巨大的内存泄漏。可能在每个帧显示中。有一个libvecore
处理系统调用的库,我们没有源代码。
我知道 A10 不是常见的主题,所以我的问题不是针对 A10,而是针对内核内存分配。
我尝试使用以下方式跟踪程序:strace -e mmap2 ./VideoPlayer
.
但我对结果感到惊讶。mmap2
视频播放器只在启动时调用,它不调用。
但同时我看到内存使用情况,TOP
我可以看到 VideoPlayer 有争议地分配内存,它几乎在 3 分钟内吃掉了 300 MB。
那么我应该考虑内存泄漏在内核中吗?或者还有其他动态分配内存的调用吗?