gpt4 book ai didi

linux - 从另一个进程中捕获异常

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:41:56 25 4
gpt4 key购买 nike

我想知道捕获异常的可能性及其可能发生在进程内的任何进程或线程中的相关堆栈跟踪。有可能吗(比如在 Linux 中)?请看一下我正在尝试做的一个例子:

  • 操作系统:Linux
  • P1:Java 进程(在其中运行一些应用程序)
  • P2:Python 进程
  • P3:C++ 进程
  • P4:我自定义的监控代码(监听P1、P2、P3可能发生的异常)

假设 P1 生成了一个在它的代码中发生的异常(比如 NullPointerException),它在 Java 代码中被正确捕获并且相关的异常处理过程运行。类似地,P2 和 P3 稍后可能会发生异常。

P4(另一个进程只监听 P1、P2 和 P3 中的异常)能否捕获 P1、P2、P3 中所有已处理/未处理的异常?在 Linux 中甚至可能吗?如果是,实现这一目标需要什么?

最佳答案

在 Linux 操作系统中,您可以使用主要内置的界面进行调试。查找系统调用 ptrace

来自 man ptrace

The ptrace() system call provides a means by which one process (the "tracer") may observe and control the execution of another process (the "tracee"), and examine and change the tracee's memory and registers. It is primarily used to implement breakpoint debugging and system call tracing.

如果您想知道如何从您正在跟踪的进程中获取内部信息,您应该从 gdb 源开始。也许看看 gdb/linux-nat.c 作为起点。

但这让您可以从操作系统的角度查看正在运行的内容。 python 脚本本身不运行且不可追踪。相反,可以跟踪 python 解释器。但是您可以从您的操作系统获得的信息不会提供任何来自 python 语言本身的有用信息。调试python脚本或者java字节码程序是很特别的。如果可用,您必须连接到解释器的调试接口(interface)。对于 python,您可以获得调试器 pdb。也许你可以开始检查这个源代码如何调试 python 程序。

祝你好运:-)

关于linux - 从另一个进程中捕获异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23989391/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com