2

我有一个在 Solaris 10 上运行的进程,由于 SIGSEGV 而终止。由于各种无趣的原因,我不可能通过通常的方式获得回溯(gdb、回溯调用、corefile 都出来了)。但我认为 dtrace 可能有用。

如果是这样,我想编写一个 dtrace 脚本,该脚本将在进程被终止时打印进程的线程堆栈。我对 dtrace 不是很熟悉,但这对于知道它的人来说似乎很容易。我希望能够以监视特定进程的方式运行它。有什么想法吗?

4

2 回答 2

3

万一其他人偶然发现了这一点,我正在使用我拼凑的以下脚本在 OS X 上进行一些实验:

#!/usr/sbin/dtrace -s

proc:::fault
/pid == $1/
{
        ustack();
}

当我有一个完整的解决方案时,我会更新它。

于 2013-06-14T18:51:53.190 回答
1

几个 Solaris 工程师编写了一个使用 Dtrace 捕获崩溃数据的脚本,并发表了一篇关于使用它的文章,现在可以在Oracle 技术网找到这篇文章:使用 DTrace 启用用户控制的应用程序崩溃数据收集

其中一位作者还发布了他的博客的一些更新,仍然可以在https://blogs.oracle.com/gregns/上阅读,但自从他 2007 年去世以来,没有任何进一步的更新。

于 2013-06-16T16:40:45.483 回答