【发布时间】:2015-10-01 08:08:18
【问题描述】:
Boost::asio::io_service 为调试目的提供“处理程序跟踪”,它通过定义 BOOST_ASIO_ENABLE_HANDLER_TRACKING 启用,但将其数据记录到 stderr。我想在我的应用程序中使用此跟踪信息。我的问题是在我的应用程序中访问<action> 的最佳方式是什么?
关于为什么我想这样做的更多背景信息;我想将 <action> 作为参数附加到其他异步操作,以便跟踪原始请求的来源。
【问题讨论】:
-
即使这是可能的,我想这也会导致性能下降。为什么不能使用从异步操作传递到异步操作的自己的标识符?
-
我和 m.s.甚至可能包含一个活动 ID 作为 GUID,以便您可以跨服务器/客户端跟踪相关活动
-
我的第一个选择是自己动手,但感觉就像一个肮脏的黑客。看到 boost 已经完成了大部分工作,我认为一些 boost 大师会有一些深奥的解决方案。
-
这种“黑客”吸引人的一个原因是它允许对调用图进行快速“n”调试 - 无需修改每个调用站点并将此信息发送到 cerr 流以外的其他地方(例如记录器已经是应用程序的一部分)会很方便。
标签: c++ boost-asio