首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >相当于“桁架-T”和“桁架-U”在Linux上?

相当于“桁架-T”和“桁架-U”在Linux上?
EN

Unix & Linux用户
提问于 2013-06-21 11:57:26
回答 2查看 10K关注 0票数 12

在Linux上,是否存在与-T Solaris实用程序的-Utruss选项相当的功能。

它们指定一个系统调用(-T)或库函数(-U),当被跟踪的应用程序调用时,它们将导致它停止。

或者,换句话说,我希望在执行给定的系统调用或给定的共享库函数调用时,停止由跟踪应用程序启动的任何进程(就像被SIGSTOP终止一样)。

Linux上的straceltrace提供了Solaris truss的大部分功能重置,但它们似乎并没有这么做。

例如:

代码语言:javascript
复制
truss -f -T open cmd

将类似于strace -f cmd,只是如果执行cmd的进程或其后代执行任何open系统调用,它将立即停止(我可以在方便的情况下稍后继续)。

在某些情况下,我可以使用gdb的S catch syscall,但我正在寻找一种解决方案,它可以方便地遵循分叉,继续对所有的分叉过程进行操作,即使在execves之后也能继续这样做。

我似乎记得有一些实用程序提供了相同的功能,甚至在某些syscall远程应用程序之间提供了一个(或该实用程序的选项)的功能,但是我的内存出现了问题,我甚至不能确定它是否在Linux上。

EN

回答 2

Unix & Linux用户

发布于 2013-07-12 21:03:03

据我所知,这不能用strace来完成,内部使用的ptrace函数在调用时执行SIGSTOPSIGINT

编辑:

我在政政中插入了这个简单的解决方案,所以不需要编码。

如果不需要strace的所有功能,我建议的解决方案是修改管理--这是我在这里找到的在70行代码中为自己编写一段代码

在一个简单的程序中,可以在以下代码之前添加两行:

代码语言:javascript
复制
if (wait_for_syscall(child) != 0) break;

伪码:

代码语言:javascript
复制
if(syscall == SYS_write)
    do {
        char str[4];
        gets(str);  // waits until enter to continue    
    } while(0);

我没有试过这些,这些最后的步骤都留给你了。

票数 3
EN

Unix & Linux用户

发布于 2013-08-19 11:48:16

Systemtap应该能够完成您想要的操作,这是一个很好的指南:

https://access.redhat.com/site/documentation/en-US/Red_帽子_企业_Linux/5/html/SystemTap_初学者_指南/指南

票数 2
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/80249

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档