gpt4 book ai didi

c - 有没有办法让进程知道 dtrace 已附加?

转载 作者:太空宇宙 更新时间:2023-11-03 23:58:51 26 4
gpt4 key购买 nike

我引入了一个环境选项,它会在启动时暂停我的进程,这样我就可以附加 dtrace(通过 XCode Instruments)并开始分析。然后我必须在进程上按 enter 键才能开始运行。我想知道我的进程是否有办法知道 dtrace 已附加,以便它可以在分析器附加后立即开始运行,而不必等待用户输入。当 dtrace 附加时,是否在进程中设置了信号或内存值?

最佳答案

在很多情况下这很有用,因此 DTrace 能够使用 -c 选项自行运行进程以强制立即开始跟踪:

   -c     Run  the  specified  command cmd and exit upon its completion.
If more than one -c option is present on the command line, dtrace
exits when all commands have exited, reporting the exit status for
each child process as it terminates. The process-ID of the first
command is made available to any D programs specified on the command
line or using the -s option through the $target macro variable.

在 D 脚本中,您可以使用 $target 来引用您使用 -c 启动的进程,例如探测器名称 pid$target: :malloc:entry 或条件 /pid == $target/

如果由于某种原因不起作用,您所要求的确切机制并不是很容易做到,因为 DTrace 大多数情况下不允许被跟踪进程可见的副作用。发挥创意,我想不用等待 stdin 上的输入,您可以检查循环中的时间,并且在 DTrace 脚本中您可以使用 destructive action void chill(int nanoseconds)BEGIN block 中暂停您的程序一秒钟左右。然后您的程序可以检测到由于自最近一次时钟测量以来超过 1 秒而导致的暂停,并开始运行。

关于c - 有没有办法让进程知道 dtrace 已附加?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53104938/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com