Poco::NestedDiagnosticContext
// Library: Foundation
// Package: Core
// Module: NestedDiagnosticContext
// Namespace: Poco
//功能:对函数调用栈进行跟踪,调试时,可以将调用栈信息tag到日志里,前提是,你在代码中加入了poco_ndc(func)或poco_ndc_dbg(func)这两个宏的调用。
public方法void dump(std::ostream& ostr) const;static NestedDiagnosticContext& current();poco_ndc(func) or poco_ndc_dbg(func)dump
将栈信息输出到ostr流中,每行一个函数信息。输出信息格式见下面的图。
current得到当前线程的NestedDiagnosticContext对象(简称NCD对象)。Poco库已经预先为每个线程定义了一个NCD对象,且是线程安全的,所以,直接调用current方法,就可得到对当前线程NCD对象的引用。
这是个宏,定义宏是为了减少代码量,对内部的push,pop等方法进行封装。我们只需要在每个函数定义的开始地方,调用poco_ndc(函数名),就可以对函数调用栈进行跟踪。
poco_ndc_dbg和poco_ndc的功能一样,如果不定义_DEBUG宏的话,