我想知道捕获异常的可能性,以及在进程中的任何进程或线程中可能发生的相关堆栈跟踪。这是否可能(例如在Linux中)?请看一看我试图做的事情的一个例子:
假设P1生成一个发生在it代码中的异常(例如NullPointerException),该异常在Java代码中被正确捕获,相关的异常处理过程运行。类似地,P2和P3可能会在稍后时间发生异常。
P4 (另一个进程只侦听P1、P2和P3中的异常)能捕获P1、P2、P3中所有已处理/未处理的异常吗?在Linux中甚至有可能吗?如果是的话,要做到这一点需要什么呢?
发布于 2014-06-02 08:19:29
在Linux中,您可以使用主要内置的接口进行调试。查找系统调用ptrace。
从人类的轨迹
ptrace()系统调用提供了一种方法,其中一个进程( "tracer")可以观察和控制另一个进程( "tracee")的执行,并检查和更改tracee的内存和寄存器。它主要用于实现断点调试和系统调用跟踪。
如果您想知道如何从您正在跟踪的进程中获取内部信息,您应该从gdb源开始。也许可以看看gdb/linux-nat.c作为起点。
但是这给了你运行的东西的操作系统视图。python脚本本身无法运行和跟踪。相反,可以跟踪python解释器。但是,您可以从操作系统获得的信息不会从python语言本身提供任何有用的信息。调试python脚本或java字节码程序非常特殊。如果可用,您必须连接到解释器的调试接口。对于python,您可以获得一个调试器pdb。也许您可以开始检查这些源如何调试python程序。
祝你好运:-)
发布于 2014-06-02 07:45:08
实现这一目标的一种实际、直接的方法:
将P1-3中的所有错误记录到日志文件中。
使用P4查看这些日志文件。
https://stackoverflow.com/questions/23989391
复制相似问题