c - 如何让 Mac OS X CrashReporter 调用调试器?

标签 c apache debugging macos

我在 Mac OS X 上有一个 Apache 模块会产生随机崩溃。我可以通过特定的操作顺序重现这些崩溃,并且这些崩溃会产生 Crash Reporter 对话框“httpd 意外退出”。有没有办法让 Crash Reporter 启动调试器(xcode、gdb 等)而不是仅仅显示回溯?

我已经尝试在 gdb 下使用 httpd -X 运行 httpd 但崩溃并没有发生 - 只有当许多httpd 正在同时运行,但我发现无法同时将 gdb 附加到所有这些上。所以我希望也许我可以让 CrashReporter 在特定进程崩溃时附加调试器 - 有没有办法做到这一点?

最佳答案

不幸的是,您描述的错误类型在检查时有消失的趋势。

也就是说,可以尝试的一个选项是从您的模块内部启动一个 GDB session 。 QA1573有一个使用 DTrace 的示例,它看起来更简洁一些,但经过一些实验后,这似乎不能很好地处理多个进程。 (在进程崩溃时,我找不到让 DTrace 附加 gdb 的方法;您只能在 proc::postsig:signal-handle进程已经崩溃。)

你可以在你的模块中做这样的事情:

% echo 'c' > continue.txt
% osascript -e 'tell app "Terminal" to do script "gdb -x continue.txt attach <pid>"'

这将为每个 httpd 进程打开一个单独的终端窗口。

您也可以从外部启动 gdb,使用脚本(DTrace 或其他方式)监视 httpd 进程,并使用 SIGSTOP模块代码中 QA1573 的方法等待脚本注意到新的 httpd

关于c - 如何让 Mac OS X CrashReporter 调用调试器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4532207/

相关文章:

php - 使用 PHP (Apache) 启动 Linux 应用程序,并具有某些命令的 root 权限

objective-c - 我找不到这个内存泄漏。我以为我正在正确地释放一切

c - 关于并行 POSIX 线程

c - 释放节点使其值变为0。如何完全删除它?

c - 抛出异常 : Access violation writing location for Matlab Coder in Visual Studio

java - 如何调试/查看 ObjectInputStream 数据?

python - 如何确保 python 函数不依赖于外部变量?

c - 在 C 中操作 char* 数组时的奇怪行为

apache - 如何使用XAMPP测试网站?

PHP 警告 : Unknown: failed to open stream