草庐IT

callstack

全部标签

java - 获取 Java 堆栈跟踪中涉及的对象

我可以使用Thread.currentThread().getStackTrace()检索当前堆栈跟踪,但这只给我调用中涉及的类。是否可以检索调用跟踪中涉及的对象实例?也许是某种允许我从堆中检索对象的库?我有一个问题,需要我回溯到一个Springbean,它间接创建了我请求堆栈跟踪的对象。更新如果Java中没有内置工具,我正在寻找一个可在运行时为我执行此操作的可嵌入库。 最佳答案 这是一个非常有趣的想法,但不幸的是,总的来说不,你不能,这是不可能的。UPD:答案为“否”的原因之一是,如果可能的话,那么必须存在对所有已创建对象的引用列

java - 我可以在 Java 中获取调用对象的实例吗?

有一个库使用一些参数调用我的方法。我想收到另一个参数,但库没有将它提供给它调用的方法。通过反编译库,我可以看到它有参数,并且它被分配给一个实例变量(不是私有(private)的,但也不是公共(public)的。)我知道如果我有实例,我可以使用反射获取变量,但我也没有实例。有什么方法可以获取实例吗?SecurityManagerhasgetClassContext(),但这只是给了我实例的类——我想要实例本身。作为我想要的快速示例:publicclassA{intb;publicA(intb,intc){this.b=b;D(c);}}publicclassD{publicD(intc)

java - 检索方法或构造函数的调用者实例(不是类)

是否可以检索方法/构造函数的调用者实例?这个问题已经发布了,但每次的答案都在谈论调用者类(使用堆栈跟踪)而不是调用者实例。如果存在解决方案,构建对象图(具有通用父类(superclass)型)并使用默认构造函数处理父子导航会非常方便。publicclassTestCallStack{publicstaticclassBaseClass{BaseClassowner;////ok,thisisthecorrectwaytodoit//publicBaseClass(BaseClassowner){//this.owner=owner;//}publicBaseClass(){//this

java - 有没有办法从 Intellij 的调试器中过滤嘈杂的堆栈帧?

我正在尝试使用Intellij的调试器调试一些代码,调用堆栈中充满了AOP和与代理相关的堆栈帧。这使得定位相关堆栈帧变得非常困难。除了过滤掉所有库堆栈帧之外,还有其他方法可以过滤这些吗? 最佳答案 当然!您的相框选项卡有一个小漏斗图标您可以使用它来隐藏已知库中的框架。检查一下: 关于java-有没有办法从Intellij的调试器中过滤嘈杂的堆栈帧?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/qu

java - eclipse 3.8 : Call Hierarchy misses callers from jars

EclipseJDT3.8中的CallHierarchyView似乎只显示当前项目/工作集中自己的类的引用/调用者。不再显示来自jars/库的调用者。相比之下,在eclipse3.6中,这显示了所有调用者,包括来自库的调用者。示例:CTRL-SHIFT-T;打开DocumentBuilderFactory在方法大纲中,右键单击setAttribute()从上下文菜单中选择CallHierarchy确保在调用层次结构设置中启用显示调用者层次结构。Eclipse3.8不显示任何匹配项,而Eclipse3.6显示(至少)一个匹配项(用jdk6测试过)(在“搜索范围”设置中,所有选项都被选中)

c++ - 如何确定调用堆栈结束?

所以我写了两个简单的类——X86StackFrame和X86CallStack:classX86StackFrame{public:X86StackFrame(void*frmAddr,void*retAddr);inlinevoid*GetFrameAddress()const{returnfrmAddr_;}inlinevoid*GetReturnAddress()const{returnretAddr_;}private:void*frmAddr_;void*retAddr_;};classX86CallStack{public:X86CallStack();inlinestd:

c++ - 阅读堆栈/堆和符号表概念的好资源是什么?

请推荐一些非常详细地处理这些主题的网站或书籍。我需要更好地理解这些概念(引用C++):堆栈和堆符号表实现范围规则函数调用的实现 最佳答案 您可以阅读DragonBook,但我想这可能太多了。 关于c++-阅读堆栈/堆和符号表概念的好资源是什么?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/2064553/

c++ - 如何在 Visual Studio 2005 中获得完整的调用堆栈?

如何获得使用VisualStudio2005开发的C++应用程序的完整调用堆栈?我想要一个完整的调用堆栈,包括系统库中的代码。我是否必须更改VisualStudio中的某些设置,或者我是否必须安装其他软件? 最佳答案 获取所有项目依赖项的调试信息。这是在项目属性的“配置属性->C/C++->常规”部分下指定的。在菜单上,转到“工具->选项”,然后选择“调试->符号”。添加指向Microsoft的免费符号服务器“symsrvsymsrv.dllc:\symbols*http://msdl.microsoft.com/downloads

c++ - __func__ 和日志记录

我正在用C++实现一个日志处理程序,它工作得很好,但是我发现有一件事是可用的,那就是记录器从中获取输出的地方。我想这并不是什么大问题,但我偶然发现了__func__标识符,它基本上会保留当前函数的函数名称。所以我在我的Log类中有一个名为Write的静态函数,它需要一个日志级别和一个变化列表。所以我会这样调用它:Log::Write(LOG_DEBUG,"thisisaninteger:%d",10);它会打印:2013-01-02=>10:12:01.366[DEBUG]:thisisaninteger:10但是我认为在消息中也包含调用者可能会很有用,以生成如下内容:2013...=

c++ - 什么可以修改帧指针?

我现在在工作中的一个相当大的C++应用程序中突然出现了一个非常奇怪的错误(在CPU和RAM使用以及代码长度方面很大-超过100,000行)。这是在双核SunSolaris10机器上运行的。该程序订阅股票价格提要并将它们显示在用户配置的“页面”上(页面是用户定制的窗口结构——该程序允许用户配置此类页面)。在其中一个底层库变成多线程之前,这个程序过去一直没有问题。受此影响的程序部分已相应更改。关于我的问题。大约每执行三次程序就会在启动时出现段错误。这不一定是一个硬性规定——有时它会连续崩溃3次,然后连续工作5次。有趣的是段错误(阅读:痛苦)。它可能以多种方式表现出来,但最常见的情况是函数A