假设在类A的方法MA()中,在创建对象之后调用类B的方法MB()。有没有办法在MB()中知道类的名称以及在C ++中调用它的方法?
答案 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)分析日志