标签: strace

如何在strace中排除一些调用?

我想用strace跟踪系统调用.有太多的读写,所以我想排除它们.

这是我的测试:

strace -e trace=!read ls
Run Code Online (Sandbox Code Playgroud)

我的电脑(ubuntu 14)无法运行此命令.错误消息是"!open:event not found".我仔细阅读了这个人,我无法理解为什么它失败了.

谢谢.!

strace

15
推荐指数
1
解决办法
4441
查看次数

strace'ing java进程时有很多SIGSEGV

当我调试CI服务器上的一个单元测试(实际上是maven构建)时发生了有趣的事情.我连接到java进程strace -ff -e trace=network -p [pid]跟踪构建过程的网络活动.这就是我所看到的:

Process 26324 attached
Process 26325 attached (waiting for parent)
Process 26325 resumed (parent 26312 ready)
Process 26325 detached
Process 26324 detached
Process 26320 detached
Process 26317 detached
Process 26308 resumed
[pid 26308] --- SIGCHLD (Child exited) @ 0 (0) ---
Process 26307 resumed
Process 26308 detached
[pid 26310] --- SIGCHLD (Child exited) @ 0 (0) ---
Process 26310 detached
[pid 25551] --- SIGSEGV (Segmentation fault) @ 0 (0) ---
Process 26309 detached …
Run Code Online (Sandbox Code Playgroud)

java segmentation-fault strace

13
推荐指数
1
解决办法
3848
查看次数

轮询系统调用超时

附加strace显示了很多这些消息:

poll([{fd=5, events=POLLIN}, {fd=6, events=POLLIN}, {fd=7, events=POLLIN}, {fd=8, events=POLLIN}, {fd=9, events=POLLIN}, {fd=10, events=POLLIN}], 6, 0) = 0 (Timeout)

poll([{fd=5, events=POLLIN}, {fd=6, events=POLLIN}, {fd=7, events=POLLIN}, {fd=8, events=POLLIN}, {fd=9, events=POLLIN}, {fd=10, events=POLLIN}], 6, 0) = 0 (Timeout)

poll([{fd=5, events=POLLIN}, {fd=6, events=POLLIN}, {fd=7, events=POLLIN}, {fd=8, events=POLLIN}, {fd=9, events=POLLIN}, {fd=10, events=POLLIN}], 6, 0) = 0 (Timeout)

poll([{fd=5, events=POLLIN}, {fd=6, events=POLLIN}, {fd=7, events=POLLIN}, {fd=8, events=POLLIN}, {fd=9, events=POLLIN}, {fd=10, events=POLLIN}], 6, 0) = 0 (Timeout)
Run Code Online (Sandbox Code Playgroud)

如何找到程序尝试访问的文件导致poll系统调用超时?

strace 生成大量消息,使其难以调试

linux system-calls strace

13
推荐指数
1
解决办法
2万
查看次数

如何从特定的Android应用程序捕获网络流量.

我读过一篇论文,提出了一种捕获来自特定Android应用程序的网络流量的方法.它说"我们使用tcpdump来收集来自虚拟机的所有网络流量.我们将strace实用程序移植到Android以记录执行的每个网络系统调用通过app.We使用应用程序的进程ID(pid)识别应用程序启动的所有线程.根据此线程信息,我们可以过滤掉不是来自应用程序的流量".但我仍然不知道操作原理.那么如何从特定的Android应用程序中捕获网络流量呢?感谢您的回答.

networking android traffic strace

13
推荐指数
1
解决办法
1万
查看次数

ptrace(PTRACE_PEEKUSER)和ptrace(PTRACE_PEEKDATA)之间的区别?

在发布了很多问题后ptrace(最近的5个问题是我的:())当我更换时,我终于得到了所需的输出

reg_val[1] = ptrace(PTRACE_PEEKDATA, child, 4 * EBX, NULL);
Run Code Online (Sandbox Code Playgroud)

reg_val[1] = ptrace(PTRACE_PEEKUSER, child, 4 * EBX, NULL);
Run Code Online (Sandbox Code Playgroud)

手册页中提到的差异是这样的

  • PTRACE_PEEKTEXT 在孩子的记忆中的位置addr读取一个单词
  • PTRACE_PEEKUSER 在孩子的USER区域的偏移地址处读取一个单词

我无法从手册页中单独理解这种差异.谁能教育我更多吗?

c ptrace system-calls strace

12
推荐指数
1
解决办法
6445
查看次数

使用PTRACE_TRACEME EPERM失败-f strace/bin/ls(不允许操作)

我跑的时候

strace -f strace /bin/ls 
Run Code Online (Sandbox Code Playgroud)

知道它失败的strace工作

ptrace(PTRACE_TRACEME, 0, 0, 0) = -1 EPERM (Operation not permitted) 
Run Code Online (Sandbox Code Playgroud)

即使是root帐号.

它有什么解决方案吗?

permissions strace

12
推荐指数
2
解决办法
2769
查看次数

无法在运行的JBoss进程上"strace -p"

我试图使用"strace -p"附加到已经运行的JBoss进程.JBoss正在使用1.5.0_15 Java JDK.不幸的是,这不起作用 - 我只得到一个futex()结果:

# strace -p 3388
Process 3388 attached - interrupt to quit
[ Process PID=3388 runs in 32 bit mode. ]
futex(0x8f18f7c, FUTEX_WAIT_PRIVATE, 1, NULL <unfinished ...>
Run Code Online (Sandbox Code Playgroud)

Strace适用于所有其他程序,但不适用于JBoss.当我通过strace启动进程时,它似乎工作正常.当我尝试连接到已经运行的进程时,它不起作用.

我正在使用64位Linux 2.6.18和32位Java JDK(RedHat Enterprise Linux 5.3,如果重要的话).

更新#1:

我尝试用"-d"运行它,但输出似乎没有任何洞察力,至少对我来说:


[root@]# strace -d -e verbose=all -p 3388
Process 3388 attached - interrupt to quit
 [wait(0x137f) = 3388]
pid 3388 stopped, [SIGSTOP]
 [wait(0x57f) = 3388]
pid 3388 stopped, [SIGTRAP]
[ Process PID=3388 runs in 32 bit mode. ]
futex(0x8f18f7c, FUTEX_WAIT_PRIVATE, …
Run Code Online (Sandbox Code Playgroud)

linux jboss strace

11
推荐指数
2
解决办法
1万
查看次数

如何在Linux中跟踪每个文件的IO操作?

我需要跟踪read特定文件的系统调用,我目前正在通过解析输出来完成此操作strace.由于read文件描述符工作我必须保持轨道之间的当前映射的fdpath.此外,seek必须进行监控以使跟踪中的当前位置保持最新.

Linux中是否有更好的方法来获取每个应用程序,每个文件路径的IO跟踪?

linux filesystems file-io trace strace

11
推荐指数
3
解决办法
3万
查看次数

解释strace输出

使用strace可以看到ioctl调用特定文件描述符和某些命令.第三个参数是结构,但strace将其显示为指向内存的原始指针.strace输出示例:

open("/dev/node", O_RDWR) = 3
ioctl(3, 0x108, 0x8f0eb18) = 0
close(3)  
Run Code Online (Sandbox Code Playgroud)

有没有办法(strace选项或其他工具)来查看结构是什么,或者至少是原始指针背后的值?

c reverse-engineering strace

11
推荐指数
1
解决办法
3774
查看次数

JVM会定期挂起

试图调试行为不端的Java VM.有问题的过程是在Centos 5上运行Sun VM 1.6u24的大型VM(100GB堆),它正在执行例行的后端工作 - 即数据库访问,文件I/O等.

重新启动进程以进行软件版本升级后,我们发现其吞吐量已显着下降.大多数时候,顶级报告称Java进程正在充分利用2个核心.在此期间,VM完全不负责任:没有写入日志,也没有响应外部工具,如jstack或kill -3.VM恢复后,该过程将按正常方式继续,直到下一次挂起.

strace显示在这些挂起期间,只有2个线程进行系统调用.这些是VM线程"VM线程"(21776)和"VM周期性任务线程"(21786).据推测,这两个线程耗尽了CPU时间.应用程序线程偶尔会唤醒并完成工作.其余的时间他们似乎在等待各种futexes.顺便提一下,正常阶段的第一行始终是SIGSEGV.

[pid 21776] sched_yield()               = 0
[pid 21776] sched_yield()               = 0
[pid 21776] sched_yield( <unfinished ...>
[pid 21786] <... futex resumed> )       = -1 ETIMEDOUT (Connection timed out)
[pid 21776] <... sched_yield resumed> ) = 0
[pid 21786] futex(0x2aabac71ef28, FUTEX_WAKE_PRIVATE, 1 <unfinished ...>
[pid 21776] sched_yield( <unfinished ...>
[pid 21786] <... futex resumed> )       = 0
[pid 21786] clock_gettime(CLOCK_MONOTONIC, {517080, 280918033}) = 0
[pid 21786] clock_gettime(CLOCK_REALTIME, {1369750039, 794028000}) = 0
[pid …
Run Code Online (Sandbox Code Playgroud)

java centos5 jvm hang strace

10
推荐指数
1
解决办法
5022
查看次数