使用 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内核中的变量(内存地址)更改,并在更改时打印堆栈跟踪?