我有一个在Solaris 10上运行的进程,由于SIGSEGV而终止。由于各种无趣的原因,我不可能通过常规手段获得回溯(gdb,回溯调用,核心文件全部用完)。但我认为dtrace可能是可用的。
如果是这样,我想编写一个dtrace脚本,它将在进程被终止时打印进程的线程堆栈。我对dtrace不太熟悉,但对于知道它的人来说,这似乎很容易。我希望能够以监视特定进程的方式运行它。有什么想法吗?
答案 0 :(得分:3)
如果其他人偶然发现了这个问题,我正在尝试使用以下脚本在OS X上进行一些尝试:
#!/usr/sbin/dtrace -s
proc:::fault
/pid == $1/
{
ustack();
}
当我有一个完整的解决方案时,我会更新它。
答案 1 :(得分:1)
一些Solaris工程师编写了一个脚本,用于使用Dtrace捕获崩溃数据并发布了一篇关于使用它的文章,现在可以在Oracle Technology Network: Enabling User-Controlled Collection of Application Crash Data With DTrace找到。
其中一位作者还发布了他的博客的一些更新,仍然可以在https://blogs.oracle.com/gregns/阅读,但自2007年去世以来,没有任何进一步的更新。