标签: strace

附加到进程时如何退出strace?

[root@woyo test]# strace -o /tmp/lsof.strace -p 5625
Process 5625 attached - interrupt to quit
q
Run Code Online (Sandbox Code Playgroud)

有谁知道?

strace

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

在共享库的构建选项中添加"-rpath,/ usr/lib"会导致段错误

我有一个你好的世界计划.

#include <stdio.h>
#include <stdlib.h>

int main()
{
    printf("hello world! \n");
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

-lmicroxml在链接阶段添加了程序的构建,以便链接到库libmicroxml.so

当我启动程序时,我遇到了分段错误.分段故障与负载有关libmicroxml.so.在我的helleo世界程序执行之后:

 strace ./test
execve("./test", ["./test"], [/* 11 vars */]) = 0
old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|0x4000000, -1, 0) = 0x777de000
stat("/etc/ld.so.cache", 0x7f944760)    = -1 ENOENT (No such file or directory)
open("/lib/libmicroxml.so.1", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/lib/libmicroxml.so.1", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/lib/libmicroxml.so.1", O_RDONLY) = 3
fstat(3, {st_mode=S_IFREG|0755, st_size=4129, ...}) = 0
old_mmap(NULL, …
Run Code Online (Sandbox Code Playgroud)

c linux gcc shared-libraries strace

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

跟踪对共享库的调用

我正在Linux下开发一个程序.

出于调试目的,我想跟踪从我的程序到某个(最好是共享的)库的所有调用.(我不想跟踪库内发生的调用.)

对于系统调用,有一些strace.是否有任何工具可以跟踪对共享库的调用?

trace shared-libraries strace

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

Linux上的挂载时间分析

我有一个应用程序,我想知道在各种活动中花了多少时间.由于这个应用程序是I/O密集型的,我想得到一个报告,总结每个库/系统调用(挂起时间)花费了多少时间.

我尝试过oprofile,但似乎它给出了Unhalted CPU周期的时间(那就是cputime,而不是实时)

我已经尝试了strace -T,它给出了墙上的时间,但是生成的数据很大并且很难获得摘要报告(并且存在awk/py脚本?)

现在我正在寻找SystemTap,但我找不到任何足够接近且可以修改的脚本,现场教程也没有多大帮助.我不确定我能找到的是什么.

我需要有人指出我正确的方向.非常感谢!

profiling strace systemtap

9
推荐指数
2
解决办法
1818
查看次数

为什么STRACE显示EAGAIN(资源暂时不可用)

以下是我得到的顺序

socket(PF_INET, SOCK_STREAM, IPPROTO_IP) = 7

    setsockopt(7, SOL_TCP, TCP_NODELAY, [1], 4) = 0
    setsockopt(7, SOL_SOCKET, SO_SNDBUF, [32120], 4) = 0
    getsockopt(7, SOL_SOCKET, SO_SNDBUF, [30064835312], [4]) = 0
    setsockopt(7, SOL_SOCKET, SO_SNDBUF, [64240], 4) = 0
    getsockopt(7, SOL_SOCKET, SO_SNDBUF, [30064899552], [4]) = 0
    stat("/etc/localtime", {st_dev=makedev(8, 1), st_ino=229001, st_mode=S_IFREG|0644, st_nlink=1, st_uid=0, st_gid=0, st_blksize=4096, st_blocks=8, st_size=265, st_atime=2013/07/15-06:30:03, st_mtime=2012/06/25-23:46:43, st_ctime=2012/06/25-23:46:43}) = 0
    write(1, "[info 2013/07/16 05:53:24.622210"..., 114) = 114
    setsockopt(7, SOL_SOCKET, SO_RCVBUF, [32120], 4) = 0
    getsockopt(7, SOL_SOCKET, SO_RCVBUF, [30064835312], [4]) = 0
    setsockopt(7, SOL_SOCKET, …
Run Code Online (Sandbox Code Playgroud)

linux tcp strace

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

8
推荐指数
1
解决办法
8403
查看次数

strace tmux输出重定向到文件

我想检查tmux在启动时触摸哪些文件(而不仅仅是tmux运行时打开文件的列表).Strace tmux似乎是最好的选择.

尝试将输出重定向到文件时strace tmux > /tmp/blah.文件为空.

为什么会这样?如何将跟踪重定向到文件?

io-redirection strace

8
推荐指数
2
解决办法
9638
查看次数

对于有一行的文件,"$(cat file)","$(<file)"和"read ... <file"有什么区别?

我有一个只包含一行的输入文件:

$ cat input
foo bar
Run Code Online (Sandbox Code Playgroud)

我想在我的脚本中使用这一行,有三种方法可以让我知道:

line=$(cat input)
Run Code Online (Sandbox Code Playgroud)
line=$(<input)
Run Code Online (Sandbox Code Playgroud)
IFS= read -r line < input
Run Code Online (Sandbox Code Playgroud)

例如,使用命令替换意味着我会生成一个子shell,而read我不这样做,对吗?还有什么其他的差异,并且有一种方式优于其他方式?我也注意到(有strace)只是因为某种原因read触发了系统调用openat.其他人怎么可能不这样做?

$ strace ./script |& grep input
read(3, "#!/usr/bin/env bash\n\ncat > input"..., 80) = 80
read(255, "#!/usr/bin/env bash\n\ncat > input"..., 167) = 167
read(255, "\nline=$(cat input)\nline=$(<input"..., 167) = 60
read(255, "line=$(<input)\nIFS= read -r line"..., 167) = 41
read(255, "IFS= read -r line < input\n", 167) = 26
openat(AT_FDCWD, "input", O_RDONLY)     = 3
Run Code Online (Sandbox Code Playgroud)

bash file strace

8
推荐指数
1
解决办法
436
查看次数

Strace多线程程序

在多线程程序上运行strace时,我得到如下结果:

[pid 14778] futex(0x7fd8082f266c, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x7fd8082f2668, {FUTEX_OP_SET, 0, FUTEX_OP_CMP_GT, 1} <unfinished ...>
[pid 14780] <... futex resumed> )       = 0
Run Code Online (Sandbox Code Playgroud)

注意参数在一行上<unfinished...>,结果在另一行上<...resumed>.没有与其结果相关的参数会降低strace的效用.在跟踪多线程程序时,是否可以使strace在同一行上打印结果和参数?

linux strace

7
推荐指数
1
解决办法
5714
查看次数

使用(DR)STRACE比较Windows程序执行

我在github上针对node-serialport 直接提出了一个关于这个问题的问题.简而言之,过去在库的v4.x中工作正常的东西不再适用于库的v6.x. 我认为它必须与库如何打开COM端口(选项或其他东西)有关,我怀疑它在当前版本的库中人为地限制了通过USB提供的功率.

我编写了最简单的脚本,我可以使用以下方法重现问题(在问题中发布的脚本):

  • NodeJS和v4.x的库[作品]
  • 库的NodeJS和v6.x [失败]
  • Python和PySerial等价[作品]

根据存储库维护者的建议,我研究并发现了一个名为drstrace的Windows实用程序,它允许我捕获执行一段时间内执行的每个脚本的日志(这些日志作为附件发布在引用中问题).

现在我卡住了,因为我不知道如何制作drstrace日志的正面或反面,尽管我确信在比较三个文件时差异可能很明显.我只是不知道如何阅读drstrace日志和Windows驱动程序和系统调用来突破.

我意识到在这里发布这个问题是一种绝望的行为,但我认为它值得一试.希望很明显,我并不缺乏自己的努力,我现在只是在我的头上,并可以使用更多的帮助.任何指导将不胜感激.最令人敬畏的是那些精通这种诊断水平的人,让他们看一看并阅读茶叶.回馈这样一个重要的开源库会很棒.

2017年11月10日更新

我联系FTDI支持询问:

我在很多产品中使用FT231X.我需要一些帮助来理解Windows FTDI驱动程序如何管理电源.更重要的是,我希望你能帮我理解如何指导驱动程序允许USB允许的全部500mA电流通过Windows电脑传送到我的产品.

答复是:

只需使用我们的FT_Prog实用程序将最大VBUS电流设置为500 mA: 在此输入图像描述

FT231X枚举后,该驱动电流可用.

我还没有尝试过这个建议,但我想和读这篇文章的人分享.事实上,node-serialport 6.0.4行为与node-serialport 4.0.7行为和pyserial行为都不同.

serial-port pyserial strace node.js

7
推荐指数
1
解决办法
159
查看次数