strace / ptrace会导致程序崩溃吗?

布兰登·旺博特

所以最近,我在与某人讨论strace,他们问如果您将一个正在运行的进程(当它正在创建网络套接字或类似的东西时)搁置,会发生什么。这会导致程序崩溃吗?

从我读到的有关ptrace的信息(即strace使用的syscall)来看,如果您只是调试线程,它应该不会引起类似的情况。每次调用系统调用时,该过程都会停止,但以后应恢复,再明智不过了。信号在不运行时会排队,因此我假设syscalls / sockets / listen也会发生类似的情况。

可以在strace上下文中使用ptrace导致任何奇怪的进程崩溃吗?

沃尔克·西格尔

strace不应该导致程序崩溃-

除非在这种不寻常的情况下:

如果它的bug取决于执行的时间或运行时的内存位置

它可能会触发这种“ heisenbug ”-但非常罕见,因为这种错误很少见,只需要在strace或其他检测条件下触发即可。当您发现heisenbug时,通常是一件好事。

关于ptrace()-系统调用-这就是strace我认为的内部功能,因此类似。比起直接strace使用,人可以做的更多ptrace()


您的示例就是这种错误:

在该示例中,strace将更改创建网络连接的步骤的时间。如果这引起了问题,那就是“等待发生的问题”-执行的时间不断变化。使用strace,仅需多一点。但是其他任何应用程序都可以改变时间,例如启动程序。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

Related 相关文章

热门标签

归档