使用 CORBA 时打印堆栈跟踪

Posted

技术标签:

【中文标题】使用 CORBA 时打印堆栈跟踪【英文标题】:Printing stack trace while using CORBA 【发布时间】:2010-12-18 12:58:04 【问题描述】:

我需要识别我的方法的调用者。所以我想打印堆栈跟踪。不幸的是,我们的系统是用 CORBA 接口构建的,所以如果我打印堆栈跟踪,我会看到这样的东西:

at net.mycompany.MyClass.MyMethod(Stream.java:124)
    at net.mycompany.corba.MyCORBAInterface.IDLStream64POA._invoke(Unknown Source)
    at org.jacorb.poa.RequestProcessor.invokeOperation(RequestProcessor.java:299)
    at org.jacorb.poa.RequestProcessor.process(RequestProcessor.java:602)
    at org.jacorb.poa.RequestProcessor.run(RequestProcessor.java:745)

如何识别真正的来电者?

【问题讨论】:

那么您想知道调用您的 corba 接口的旧客户端方法吗?我不认为 java 堆栈跟踪可以显示这一点。 【参考方案1】:

一般来说,在 CORBA 中不可能知道调用者的调用堆栈 - 调用者甚至可能不是用 Java 编写的。

你有两个选择:

    让异常传播回客户端。 CORBA 中有一个扩展来支持 Java 调用栈的传播。如果 JacORB 支持这一点,并且客户端能够解释它,您可能会在客户端上获得一些合理的回溯。 JacORB 有一个 extension for tracing,您可能想使用它。

【讨论】:

以上是关于使用 CORBA 时打印堆栈跟踪的主要内容,如果未能解决你的问题,请参考以下文章

调试 – 观察Linux内核中的变量(内存地址)更改,并在更改时打印堆栈跟踪?

log4j 不打印异常的堆栈跟踪

如何打印 C++ 中捕获的异常的堆栈跟踪和 C++ 中的代码注入

在linux平台上用c/c++打印进程的所有线程堆栈跟踪

从 C# 打印堆栈跟踪信息

使用 sbt 和 testng 时,如何获取测试中抛出的异常的完整堆栈跟踪?