有没有办法知道在C ++中调用对象方法的类的名称?

时间:2010-08-23 00:22:26

标签: c++ oop

假设在类A的方法MA()中,在创建对象之后调用类B的方法MB()。有没有办法在MB()中知道类的名称以及在C ++中调用它的方法?

2 个答案:

答案 0 :(得分:3)

您所谈论的是Stack Trace

堆栈跟踪定义:

  

堆栈跟踪是一项非常有用的调试   你通常会采取的工具   异常的优点   被抛出它提供信息   关于执行历史   当前线程,显示名称   其中的类和方法   那些被调用的类   异常发生的时刻。

"How can one grab a stack trace in C?"上的这个SO问题有你需要的答案。

答案 1 :(得分:1)

更简单,更通用的方法如下:

a)根据运行时条件(例如特定环境变量)/调试开关

启用输出跟踪

b)记录每个函数的入口和出口以及线程id(以处理多线程应用程序)。为此,请使用__FILE__ and __LINE__预处理程序指令。

c)使用良好的logviewer应用程序(例如Windows上的DebugView)分析日志