【发布时间】:2016-10-27 08:26:45
【问题描述】:
我在我的 C++ 应用程序中集成了 Google-Breakpad。现在,我故意让应用程序崩溃,但它在我的 Ubuntu i686 系统中挂起。我必须将printf 放在 Breakpad 的任何地方,以检查它到底挂在哪里。因此,在 breakpad 中,正在创建一个克隆子进程,并且在该进程中 ptrace(PTRACE_ATTACH, pid, NULL, NULL) 后跟 waitpid(pid, NULL, __WALL) 系统调用在每个线程上被调用。一个特定的线程 waitpid 进入无限等待状态,然后我不得不故意终止应用程序。
有谁知道为什么会发生这种情况?为什么这个特定线程waitpid() 处于无限等待状态?有没有相同的解决方案?
谢谢。
【问题讨论】:
-
您必须提供更多信息。目前尚不清楚你在问什么。我认为 break-pad 支持论坛是提出这个问题的更好地方。
-
我投票结束这个问题作为离题,因为它对于堆栈溢出来说太宽泛了,并且确实属于 break-pad 支持论坛。
-
@ShacharShemesh 我已经在breakpad论坛(groups.google.com/forum/#!topic/google-breakpad-discuss/…)问过了。我想我提供了所有必需的信息。只需将其视为没有breakpad的正常问题。我只需要知道
waitpid在ptrace(PTRACE_ATTACH..)调用一个特定线程之后进入无限等待状态的原因是什么?不像没有人使用 ptrace 和 waitpid 组合。 -
好主意。那么如果这是一个正常的问题,请随时发布 MCVE。 (stackoverflow.com/help/mcve)
标签: c++14 ptrace google-breakpad